Board Game Arena tournoidoc139_sv http:///Huvudsida MediaWiki 1.39.0 first-letter Media Special Diskussion Användare Användardiskussion Board Game Arena Board Game Arenadiskussion Fil Fildiskussion MediaWiki MediaWiki-diskussion Mall Malldiskussion Hjälp Hjälpdiskussion Kategori Kategoridiskussion Main Page 0 1 1 2012-01-05T15:36:33Z MediaWiki default 0 wikitext text/x-wiki '''MediaWiki has been successfully installed.''' Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] b7a3846f2c55072191227d89a3204fe379288fee 6 1 2012-01-23T08:20:44Z Sourisdudesert 1 Redirected page to [[Help]] wikitext text/x-wiki #REDIRECT [[Help]] 716110d80c64acdd324d04dd290c1bffae7bce06 MediaWiki:Sidebar 8 2 2 2012-01-06T14:15:59Z Sourisdudesert 1 Created page with " * navigation ** http://boardgamearena.com|BoardGameArena.com ** mainpage|mainpage-description ** recentchanges-url|recentchanges * SEARCH * TOOLBOX * LANGUAGES" wikitext text/x-wiki * navigation ** http://boardgamearena.com|BoardGameArena.com ** mainpage|mainpage-description ** recentchanges-url|recentchanges * SEARCH * TOOLBOX * LANGUAGES bd8432e95416d227d9bca445c1f77a70aee1fbec Faq 0 3 3 2012-01-20T20:48:59Z Sourisdudesert 1 Created page with " test [[File:Reputation_down.png]]" wikitext text/x-wiki test [[File:Reputation_down.png]] 7b93a95fc5cc35ff8637c12da14176e1205f1e01 4 3 2012-01-20T21:10:48Z Sourisdudesert 1 wikitext text/x-wiki test [[File:Reputation_down.png]] http://en.wikipedia.org/upload/b/bc/Wiki.png 9195da8cff4846394bfa49361b55be1597869f51 5 4 2012-01-20T21:11:12Z Sourisdudesert 1 wikitext text/x-wiki test [[File:Reputation_down.png]] http://en.wikipedia.org/upload/b/bc/Wiki.png http://static.tournoi-en-ligne.fr/data/themereleases/120120-1440/img/stoneage/game_icon.png 92692e80e27e413417c9e34326c6e0df02a4ba1c 8 5 2012-01-23T08:25:52Z Sourisdudesert 1 wikitext text/x-wiki == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the bug section in the forum, see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. What is the legal status of this website? All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. I'm a game publisher: why would I like to have my game on Board Game Arena? The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. Meeting players and starting games I launched a new table but nobody is joining? Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. I joined a game. When does the game start? Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. What is the meaning of the small color circle next to players names? : this player is active. He completed an action very recently. : this player is inactive. He is connected to the website but did not perform any action recently. : this player is offline. During the game What is the meaning of the icons next to players names? : this player must make a move now. : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. A player has to make a move but he/she doesn't. What can I do? First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. Then you can ask this player to confirm that he is still thinking about how to play. If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. What is the current progression of the game I'm playing? A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. What is forbidden on Board Game Arena? Leaving a game in progress on purpose. Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious loosing situation. Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. Running out of time on the game clock. Giving some piece of information about the current game situation that corrupts the normal game flow. Communicating with another player about the game privately (ex: with MSN). Provocation / triumphalism / defeatism ... anything which is not fair play. Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. What is absolutely forbidden in Board Game Arena? Creating multiple account and playing against oneself. Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. What if some player does something wrong? Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. ab1d2e0d199f098d3288fe43081e422ab59e699c 9 8 2012-01-23T08:28:22Z Sourisdudesert 1 wikitext text/x-wiki == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== : this player is active. He completed an action very recently. : this player is inactive. He is connected to the website but did not perform any action recently. : this player is offline. == During the game == ===What is the meaning of the icons next to players names?=== : this player must make a move now. : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious loosing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. 556e32db4b9111710ffcbc1ad05f9ec857794e31 10 9 2012-01-23T08:29:03Z Sourisdudesert 1 /* What is the meaning of the small color circle next to players names? */ wikitext text/x-wiki == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. == During the game == ===What is the meaning of the icons next to players names?=== : this player must make a move now. : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious loosing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. c6e6418ab580cd5812c4f613e1be5737fa3a6f7c 11 10 2012-01-23T08:29:43Z Sourisdudesert 1 /* What is the meaning of the icons next to players names? */ wikitext text/x-wiki == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious loosing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. 3678e480ae646ee50cada05e6bf34cac1faf094c 24 11 2012-01-23T08:43:03Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious loosing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. 929b9aebaa71e05b8e961016d35d724169bbcf2d Help 0 4 7 2012-01-23T08:23:35Z Sourisdudesert 1 Created page with "An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com]] Forums are also helpful to get information. == Hel..." wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com]] Forums are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailled help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] bb066b4658e936f326aa0ee996bb45e23cb8c2b0 12 7 2012-01-23T08:30:09Z Sourisdudesert 1 wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com] Forums are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailled help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] 95118ab41bd97e3433383cecebb8e7e133c40b10 13 12 2012-01-23T08:30:21Z Sourisdudesert 1 wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com Forums] are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailled help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] 16b14d9549ac5aa2e310653b33e55be4abd27bb0 About Board Game Arena 0 5 14 2012-01-23T08:31:22Z Sourisdudesert 1 Created page with "With '''Board Game Arena''' you can play board games online with the whole world. Board Game Arena is a next generation game platform which makes online gaming more simple a..." wikitext text/x-wiki With '''Board Game Arena''' you can play board games online with the whole world. Board Game Arena is a next generation game platform which makes online gaming more simple and attractive: * Nothing to install: play straight from your browser, from anywhere, at anytime. * Real time: your opponents are online, you play "live". * Simple: if you know the game, then you know how to play online. * Free. Board Game Arena offers a [http://en.boardgamearena.com/#!gamelist growing selection of board and card games]. We are specialized in modern adults games ("European style games"). This game platform has been designed to host any kind of game. This flexibility allow us to propose a '''new game every month'''. b9d59b3d8e80f8df79151e82dbdede2ee6efc91c 25 14 2012-01-23T08:43:15Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] With '''Board Game Arena''' you can play board games online with the whole world. Board Game Arena is a next generation game platform which makes online gaming more simple and attractive: * Nothing to install: play straight from your browser, from anywhere, at anytime. * Real time: your opponents are online, you play "live". * Simple: if you know the game, then you know how to play online. * Free. Board Game Arena offers a [http://en.boardgamearena.com/#!gamelist growing selection of board and card games]. We are specialized in modern adults games ("European style games"). This game platform has been designed to host any kind of game. This flexibility allow us to propose a '''new game every month'''. 4f7854886444585b16fecb70e4b46c419e6db368 28 25 2012-01-23T08:43:48Z Sourisdudesert 1 wikitext text/x-wiki With '''Board Game Arena''' you can play board games online with the whole world. Board Game Arena is a next generation game platform which makes online gaming more simple and attractive: * Nothing to install: play straight from your browser, from anywhere, at anytime. * Real time: your opponents are online, you play "live". * Simple: if you know the game, then you know how to play online. * Free. Board Game Arena offers a [http://en.boardgamearena.com/#!gamelist growing selection of board and card games]. We are specialized in modern adults games ("European style games"). This game platform has been designed to host any kind of game. This flexibility allow us to propose a '''new game every month'''. b9d59b3d8e80f8df79151e82dbdede2ee6efc91c About us 0 6 15 2012-01-23T08:31:55Z Sourisdudesert 1 Created page with "First, we should say that we are gamers. Real, complete boardgames addicts. We designed '''Board Game Arena''' for players who can't play for real because of time, geographic..." wikitext text/x-wiki First, we should say that we are gamers. Real, complete boardgames addicts. We designed '''Board Game Arena''' for players who can't play for real because of time, geographic or social constraints. We would like to provide a new game experience with the best of two worlds: video games and board games. Although we aim to provide high quality online games, we are still convinced that the best way to enjoy board games is around a *real* table with friends. This is one of the reason we strongly recommand you to buy physical copies of the games you discover on BGA. The other reason is simple to understand: each game sale is also a revenue for an author and an editor (... we've come full circle). [[Contact us]] 09d076571c067045048850f642e222a1e1485eb7 26 15 2012-01-23T08:43:26Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] First, we should say that we are gamers. Real, complete boardgames addicts. We designed '''Board Game Arena''' for players who can't play for real because of time, geographic or social constraints. We would like to provide a new game experience with the best of two worlds: video games and board games. Although we aim to provide high quality online games, we are still convinced that the best way to enjoy board games is around a *real* table with friends. This is one of the reason we strongly recommand you to buy physical copies of the games you discover on BGA. The other reason is simple to understand: each game sale is also a revenue for an author and an editor (... we've come full circle). [[Contact us]] 366663e98e2fe4f1c5659450c36d0b7db247b03f 27 26 2012-01-23T08:43:39Z Sourisdudesert 1 wikitext text/x-wiki First, we should say that we are gamers. Real, complete boardgames addicts. We designed '''Board Game Arena''' for players who can't play for real because of time, geographic or social constraints. We would like to provide a new game experience with the best of two worlds: video games and board games. Although we aim to provide high quality online games, we are still convinced that the best way to enjoy board games is around a *real* table with friends. This is one of the reason we strongly recommand you to buy physical copies of the games you discover on BGA. The other reason is simple to understand: each game sale is also a revenue for an author and an editor (... we've come full circle). [[Contact us]] 09d076571c067045048850f642e222a1e1485eb7 Club 0 7 16 2012-01-23T08:32:39Z Sourisdudesert 1 Redirected page to [[Club Board Game Arena]] wikitext text/x-wiki #REDIRECT [[Club Board Game Arena]] fac244084d01208926b41fc59a051c6ed0c0748a Club Board Game Arena 0 8 17 2012-01-23T08:34:49Z Sourisdudesert 1 Created page with "Board Game Arena's main goal is to promote board games to a large audience. This is the reason why the service is '''free''' for everyone, and '''meant to stay that way'''. A..." wikitext text/x-wiki Board Game Arena's main goal is to promote board games to a large audience. This is the reason why the service is '''free''' for everyone, and '''meant to stay that way'''. As you can imagine, though, this website needs a lot of time and some money to keep things running smoothly. Some players are helping us with contributions or through donations. This website can exist only because of the help from these players, and to thank them we make them members of the "Board Game Arena Club". == How can I become a club member ? == The three main ways to become a club member are: * Make this website known (see referral) * [http://en.boardgamearena.com/#!translationhq Contribute to translate] this website * Support this website with a donation (payment buttons below) {| |Donate '''20€''' (1 year club membership) |Donate '''11€''' (6 months club membership) |Donate '''4€''' (2 months club membership) |- |{one_year_membership} |{six_month_membership} |{two_month_membership} |} ==Why should I join the club ?== The main reason you should join the club is to support this website. Also, as a token of appreciation for their support, we give to club members an access to some statistics: ELO ranking of all members including yours (instead of ), games statistics and specific player statistics for each game. Why can't you just have a standard donation system where I can choose any money amount ? With this "club" system, we try to highlight players who supported this website recently or do so on a regular basis. Depending on the amount of your donation, you are a member of the club for a given period of time. Many websites are using a more classical approach with a simple "donation box". By experience, we know that these websites rely on just a few generous users. Board Game Arena chooses to set 3 fixed amounts for donations in order to rely on a bigger number of small donors. Is it mandatory to join the club ? Of course not. You can play for free without any limitation even if you are not a member of the club: Board Game Arena is a free service. Statistics are just an extra : you don't need statistics to play and have fun, don't you ? As a matter of fact, most players are not club members. What is a beginner account ? When you join Board Game Arena, your get a "beginner account" () for 30 days. This beginner account allow you to view your own ELO ranking () for each game. After 30 days, your account becomes a standard non member account (). What becomes of the money ? Board Game Arena service is managed by a semi-professional team who needs money to make it run (in particular: hosting cost). Player donations are used to develop this website (new features, new games), to make it run (hosting, maintenance), to build the player community (events)... A big "thank you" to all members of the Board Game Arena Club whose contributions allow this website to exist for the enjoyment of everyone ! 05a49a509de676c255b30cd47a1719a179d3873e 18 17 2012-01-23T08:35:14Z Sourisdudesert 1 /* How can I become a club member ? */ wikitext text/x-wiki Board Game Arena's main goal is to promote board games to a large audience. This is the reason why the service is '''free''' for everyone, and '''meant to stay that way'''. As you can imagine, though, this website needs a lot of time and some money to keep things running smoothly. Some players are helping us with contributions or through donations. This website can exist only because of the help from these players, and to thank them we make them members of the "Board Game Arena Club". == How can I become a club member ? == The three main ways to become a club member are: * Make this website known (see [[referral]]) * [http://en.boardgamearena.com/#!translationhq Contribute to translate] this website * Support this website with a donation (payment buttons below) {| |Donate '''20€''' (1 year club membership) |Donate '''11€''' (6 months club membership) |Donate '''4€''' (2 months club membership) |- |{one_year_membership} |{six_month_membership} |{two_month_membership} |} ==Why should I join the club ?== The main reason you should join the club is to support this website. Also, as a token of appreciation for their support, we give to club members an access to some statistics: ELO ranking of all members including yours (instead of ), games statistics and specific player statistics for each game. Why can't you just have a standard donation system where I can choose any money amount ? With this "club" system, we try to highlight players who supported this website recently or do so on a regular basis. Depending on the amount of your donation, you are a member of the club for a given period of time. Many websites are using a more classical approach with a simple "donation box". By experience, we know that these websites rely on just a few generous users. Board Game Arena chooses to set 3 fixed amounts for donations in order to rely on a bigger number of small donors. Is it mandatory to join the club ? Of course not. You can play for free without any limitation even if you are not a member of the club: Board Game Arena is a free service. Statistics are just an extra : you don't need statistics to play and have fun, don't you ? As a matter of fact, most players are not club members. What is a beginner account ? When you join Board Game Arena, your get a "beginner account" () for 30 days. This beginner account allow you to view your own ELO ranking () for each game. After 30 days, your account becomes a standard non member account (). What becomes of the money ? Board Game Arena service is managed by a semi-professional team who needs money to make it run (in particular: hosting cost). Player donations are used to develop this website (new features, new games), to make it run (hosting, maintenance), to build the player community (events)... A big "thank you" to all members of the Board Game Arena Club whose contributions allow this website to exist for the enjoyment of everyone ! eb70d022960d5fd26851ae3c461dcf0de7f275f4 19 18 2012-01-23T08:37:03Z Sourisdudesert 1 wikitext text/x-wiki Board Game Arena's main goal is to promote board games to a large audience. This is the reason why the service is '''free''' for everyone, and '''meant to stay that way'''. As you can imagine, though, this website needs a lot of time and some money to keep things running smoothly. Some players are helping us with contributions or through donations. This website can exist only because of the help from these players, and to thank them we make them members of the "Board Game Arena Club". == How can I become a club member ? == The three main ways to become a club member are: * Make this website known (see [[referral]]) * [http://en.boardgamearena.com/#!translationhq Contribute to translate] this website * Support this website with a donation (payment buttons below) {| |Donate '''20€''' (1 year club membership) |Donate '''11€''' (6 months club membership) |Donate '''4€''' (2 months club membership) |- |{one_year_membership} |{six_month_membership} |{two_month_membership} |} ==Why should I join the club ?== The main reason you should join the club is to support this website. Also, as a token of appreciation for their support, we give to club members an access to some statistics: ELO ranking http://en.boardgamearena.com/theme/img/common/rank.png of all members including yours (instead of http://fr.boardgamearena.com/theme/img/common/rankmask.png), games statistics and specific player statistics for each game. ==Why can't you just have a standard donation system where I can choose any money amount ?== With this "club" system, we try to highlight players who supported this website recently or do so on a regular basis. Depending on the amount of your donation, you are a member of the club for a given period of time. Many websites are using a more classical approach with a simple "donation box". By experience, we know that these websites rely on just a few generous users. Board Game Arena chooses to set 3 fixed amounts for donations in order to rely on a bigger number of small donors. ==Is it mandatory to join the club ?== Of course not. You can play for free without any limitation even if you are not a member of the club: Board Game Arena is a free service. Statistics are just an extra : you don't need statistics to play and have fun, don't you ? As a matter of fact, most players are not club members. ==What is a beginner account ? http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif == When you join Board Game Arena, your get a "beginner account" (http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif) for 30 days. This beginner account allow you to view your own ELO ranking (http://en.boardgamearena.com/theme/img/common/rank.png) for each game. After 30 days, your account becomes a standard '''non member''' account (http://en.boardgamearena.com/theme/img/accounttypes/free.gif). ==What becomes of the money ?== Board Game Arena service is managed by a semi-professional team who needs money to make it run (in particular: hosting cost). Player donations are used to develop this website (new features, new games), to make it run (hosting, maintenance), to build the player community (events)... A big "thank you" to all members of the Board Game Arena Club whose contributions allow this website to exist for the enjoyment of everyone ! a12f51dc80f363786676e4551d1473aabc326650 20 19 2012-01-23T08:38:47Z Sourisdudesert 1 /* Why should I join the club ? */ wikitext text/x-wiki Board Game Arena's main goal is to promote board games to a large audience. This is the reason why the service is '''free''' for everyone, and '''meant to stay that way'''. As you can imagine, though, this website needs a lot of time and some money to keep things running smoothly. Some players are helping us with contributions or through donations. This website can exist only because of the help from these players, and to thank them we make them members of the "Board Game Arena Club". == How can I become a club member ? == The three main ways to become a club member are: * Make this website known (see [[referral]]) * [http://en.boardgamearena.com/#!translationhq Contribute to translate] this website * Support this website with a donation (payment buttons below) {| |Donate '''20€''' (1 year club membership) |Donate '''11€''' (6 months club membership) |Donate '''4€''' (2 months club membership) |- |{one_year_membership} |{six_month_membership} |{two_month_membership} |} ==Why should I join the club ?== The main reason you should join the club is to support this website. Also, as a token of appreciation for their support, we give to club members an access to some statistics: ELO ranking (http://en.boardgamearena.com/theme/img/common/rank.png) of all members including yours (instead of http://fr.boardgamearena.com/theme/img/common/rankmask.png), games statistics and specific player statistics for each game. ==Why can't you just have a standard donation system where I can choose any money amount ?== With this "club" system, we try to highlight players who supported this website recently or do so on a regular basis. Depending on the amount of your donation, you are a member of the club for a given period of time. Many websites are using a more classical approach with a simple "donation box". By experience, we know that these websites rely on just a few generous users. Board Game Arena chooses to set 3 fixed amounts for donations in order to rely on a bigger number of small donors. ==Is it mandatory to join the club ?== Of course not. You can play for free without any limitation even if you are not a member of the club: Board Game Arena is a free service. Statistics are just an extra : you don't need statistics to play and have fun, don't you ? As a matter of fact, most players are not club members. ==What is a beginner account ? http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif == When you join Board Game Arena, your get a "beginner account" (http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif) for 30 days. This beginner account allow you to view your own ELO ranking (http://en.boardgamearena.com/theme/img/common/rank.png) for each game. After 30 days, your account becomes a standard '''non member''' account (http://en.boardgamearena.com/theme/img/accounttypes/free.gif). ==What becomes of the money ?== Board Game Arena service is managed by a semi-professional team who needs money to make it run (in particular: hosting cost). Player donations are used to develop this website (new features, new games), to make it run (hosting, maintenance), to build the player community (events)... A big "thank you" to all members of the Board Game Arena Club whose contributions allow this website to exist for the enjoyment of everyone ! 07d7d56ac7137270da1cb1e701810fd74c30b286 Contact us 0 9 21 2012-01-23T08:40:19Z Sourisdudesert 1 Created page with "'''Board Game Arena''' is located in France. == E-mail contact == contact(at)boardgamearena.com We receive *a lot* of e-mails. Please do not send us an e-mail if: * ... i..." wikitext text/x-wiki '''Board Game Arena''' is located in France. == E-mail contact == contact(at)boardgamearena.com We receive *a lot* of e-mails. Please do not send us an e-mail if: * ... if you want to report a bug, please do it in the corresponding forum. * ... if you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile == Responsible == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 3fa5849702cf1b1b19bd3acb243c32dbb041a4a9 Getting started 0 10 22 2012-01-23T08:42:02Z Sourisdudesert 1 Created page with "With '''Board Game Arena''' you can play within a few clicks. By choosing "[http://en.boardgamearena.com/#!lobby Play now]" on the left menu, you get a list of game tables wa..." wikitext text/x-wiki With '''Board Game Arena''' you can play within a few clicks. By choosing "[http://en.boardgamearena.com/#!lobby Play now]" on the left menu, you get a list of game tables waiting for players. You can join a game by clicking on "View table" then "Join game". If you prefer, you can create a new game table: click on the "Launch table" button that corresponds to the game you want to play, and wait for your opponents. Important to know before you start: * It's much better to join a table already created than to create a new one. * For most popular games you will find opponents at any time. For the others, try to connect around peak hour (around 22h CEST) to maximize your chances. * When you start a game you can't leave the table until it ends. If you leave you will receive a penalty which cause you difficulties to find opponents later. 00acad1f28c408117fc7c59eac2c4627a71d7e72 23 22 2012-01-23T08:42:52Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] With '''Board Game Arena''' you can play within a few clicks. By choosing "[http://en.boardgamearena.com/#!lobby Play now]" on the left menu, you get a list of game tables waiting for players. You can join a game by clicking on "View table" then "Join game". If you prefer, you can create a new game table: click on the "Launch table" button that corresponds to the game you want to play, and wait for your opponents. Important to know before you start: * It's much better to join a table already created than to create a new one. * For most popular games you will find opponents at any time. For the others, try to connect around peak hour (around 22h CEST) to maximize your chances. * When you start a game you can't leave the table until it ends. If you leave you will receive a penalty which cause you difficulties to find opponents later. 860720b52040414f964590d5eb8639fb21735545 Referral 0 11 29 2012-01-23T08:46:41Z Sourisdudesert 1 Created page with "[[Category:Help]] When new players discover Board Game Arena thanks to you, you become a member of [[Club Board Game Arena]] == How does this work? == Each time a new player..." wikitext text/x-wiki [[Category:Help]] When new players discover Board Game Arena thanks to you, you become a member of [[Club Board Game Arena]] == How does this work? == Each time a new player create an account on Board Game Arena from you referrer web address (see below), he becomes one of your '''referees'''. As soon as this referee played few games, you become a member of BGA club. == How to get referees? == To recruit referees, use your personal referrer web address: {sponsorshipurl} New players MUST create an account from this web address to become one of your referees. == How to get many referees? == * [http://boardgamearena.com/#!doc/sponsor?facebook Tell my friends on Facebook] * [http://boardgamearena.com/#!doc/sponsor?twitter Tell my followers on Twitter] * [http://boardgamearena.com/#!doc/sponsor?email Tell my friends by email] * Publish my personal web address in some forum, send it by MSN, ... == How many BGA club membership days can I win? == As soon as your first referee finish his '''third''' game on Board Game Arena, you win a '''1 month''' BGA club membership. ''Note: your account upgrade will be effective within 24 hours.'' As soon as you get '''2 referees''' with at least '''4 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. As soon as you get '''3 referees''' with at least '''5 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. ... and so on: as your referees number grows you can win many free memberships ! == Referees and multiple account == It is of course forbidden to create fake referee accounts to win free memberships. 52e8ab57da4a8638af8bcfdb8ab9549d2bd5ad12 Kategori:Help 14 12 30 2012-01-23T08:47:01Z Sourisdudesert 1 Created page with "Board Game Arena help pages" wikitext text/x-wiki Board Game Arena help pages adc7e25dcb01838e74ee4f7611812cf2762d2767 Browser support 0 13 31 2012-01-23T08:47:52Z Sourisdudesert 1 Created page with "Board Game Arena is using the most recent web technology to make it possible for you to play without installing anything on your computer: no software to download, no plugin t..." wikitext text/x-wiki Board Game Arena is using the most recent web technology to make it possible for you to play without installing anything on your computer: no software to download, no plugin to install, ... Consequently, to play you need to use a recent web browser. Generally speaking, the more recent your web browser is, the more pleasant your game experience on Board Game Arena will be. We officially support the following browsers: * Mozilla Firefox 3.5+ * Google Chrome 4+ * Internet Explorer 8 (partial support for IE7) * Internet Explorer 9 * Safari 4+ (Note: we are NOT supporting iPad or similar tablets) This website uses Javascript technology and your browser's graphics possibilities intensely. Thus, if you want to have the best game experience with Board Game Arena, you should use one of these browsers: * Mozilla Firefox 4 * Google Chrome 10 32bb40e75bb29f6d724daafd30c7906adcadadb7 36 31 2012-01-23T08:52:07Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] Board Game Arena is using the most recent web technology to make it possible for you to play without installing anything on your computer: no software to download, no plugin to install, ... Consequently, to play you need to use a recent web browser. Generally speaking, the more recent your web browser is, the more pleasant your game experience on Board Game Arena will be. We officially support the following browsers: * Mozilla Firefox 3.5+ * Google Chrome 4+ * Internet Explorer 8 (partial support for IE7) * Internet Explorer 9 * Safari 4+ (Note: we are NOT supporting iPad or similar tablets) This website uses Javascript technology and your browser's graphics possibilities intensely. Thus, if you want to have the best game experience with Board Game Arena, you should use one of these browsers: * Mozilla Firefox 4 * Google Chrome 10 03a7ec9371d3e330c0ce5224bdda0f3bf49ec060 Moderation and grades 0 14 32 2012-01-23T08:49:30Z Sourisdudesert 1 Created page with "Board Game Arena is a friendly and respectful community of players. The moderation and grades system help us to ensure that the minority of players who disrespect the spirit o..." wikitext text/x-wiki Board Game Arena is a friendly and respectful community of players. The moderation and grades system help us to ensure that the minority of players who disrespect the spirit of this website can't bother other players. When you register on Board Game Arena, you're a '''mortal'''. You can access most of the functionalities of this website, except some of them (ex: speaking on global chat). After a while, you are promoted to the '''angel''' grade. With this grade you are able to access all functionalities of the service. But, if you go against the Board Game Arena terms, you can be moderated and demoted to '''devilkin''' or '''demon'''. If you manage to become a well appreciated player, you can become a moderator with a superior grade: seraph or cherub. == All grades == * '''Mortal''': this is your grade when you registered on Board Game Arena. You can access almost all functionalities of the website (but you can't speak on general channel). * '''Angel''': this is the grade of regular players. To be promoted to this grade, you need: 3 days seniority, 3 games played and 3 positive reputation points. * '''Seraph''': this is the moderator grade. Seraph can punish players who disrespect BGA terms of use: reputation penalties, inferior grade. * '''Cherub''': this is the super moderator grade. Cherub check that Seraph are fair and unbiased. * '''Archangel''': this is the Board Game Arena administrators' grade. * '''Demon''': due to a major terms of use violation, this player is not allowed to do anything on the website during a period of time (or forever ...) * '''Devilkin''': due to a terms of use violation, this player is not allowed to speak on Board Game Arena (or publish anything) during a period of time. 05df6f50ad4723b2aa3c8dfd1e36e49da6dcb38e 35 32 2012-01-23T08:51:55Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] Board Game Arena is a friendly and respectful community of players. The moderation and grades system help us to ensure that the minority of players who disrespect the spirit of this website can't bother other players. When you register on Board Game Arena, you're a '''mortal'''. You can access most of the functionalities of this website, except some of them (ex: speaking on global chat). After a while, you are promoted to the '''angel''' grade. With this grade you are able to access all functionalities of the service. But, if you go against the Board Game Arena terms, you can be moderated and demoted to '''devilkin''' or '''demon'''. If you manage to become a well appreciated player, you can become a moderator with a superior grade: seraph or cherub. == All grades == * '''Mortal''': this is your grade when you registered on Board Game Arena. You can access almost all functionalities of the website (but you can't speak on general channel). * '''Angel''': this is the grade of regular players. To be promoted to this grade, you need: 3 days seniority, 3 games played and 3 positive reputation points. * '''Seraph''': this is the moderator grade. Seraph can punish players who disrespect BGA terms of use: reputation penalties, inferior grade. * '''Cherub''': this is the super moderator grade. Cherub check that Seraph are fair and unbiased. * '''Archangel''': this is the Board Game Arena administrators' grade. * '''Demon''': due to a major terms of use violation, this player is not allowed to do anything on the website during a period of time (or forever ...) * '''Devilkin''': due to a terms of use violation, this player is not allowed to speak on Board Game Arena (or publish anything) during a period of time. 49931146459d3900e8e8099ce554da943f7a304b Game clock 0 15 33 2012-01-23T08:51:23Z Sourisdudesert 1 Created page with "On '''Board Game Arena''' you are playing "live" (real time). Then you has a delay to play your moves. Your initial delay at the beginning of a game is most of the time '''3 ..." wikitext text/x-wiki On '''Board Game Arena''' you are playing "live" (real time). Then you has a delay to play your moves. Your initial delay at the beginning of a game is most of the time '''3 minutes'''. At each turn, or on specific occasion, you get an additional delay. If you have no more time to play, you will get a penalty and can become eligible to be expelled from the game. == Time to think == Your alloted time to think is displayed on the right of your player's name. When it's your turn to player, this time is also displayed at the top of the web page. == Game speed == Table administrator can make a choice between 4 game speed profile: * Fast * Normal * Slow * Without time limit The additional amount of time credited each turn depends on chosen game speed profile. Be careful to check game speed before game start to adapt your timing. Note: playing without time limit is strongly discouraged, except if you are playing with friends or to discover a new game. Remember that without time limit, you can't expel a player that stops playing. == Running out of time == As soon as you run out of time, you get a clock penalty. If you goes over your alloted time by more than 3/4/5 minutes (depending on game speed), any opponent can expel you from the game. Of course, it is strongly advised not to run out of time ... == Move time limit == In addition to your classical time to think, you have a limited time alloted for each move. When it's your turn to play, a red bar appears on top of the web page. It symbolized the remaining time limit for this move. The amount of time depends on game speed. If you goes over this limit, you become eligible to be expelled from the game. == "My opponent is too slow" == Each of us has different expectations on game speed. Please remember that as soon as a table has been set up at a given game speed, each player is allowed to use all his alloted time to think. If you want to play fast, set up or join table with "fast" mode only, but don't force an opponent to play when he has the right to do so. == "I would like to think a little" == If you are in a critical step of the game and want to take some time to think, you can click on the link "I would like to think a little" on the top right of the page. Thus, your opponents will receive a message and won't be thinking you are away from keyboard. Clicking on this link is not mandatory, but we encourage its use for courtesy. 1cfe01c7a6e760c91b41e2d84865f9706010ebdf 34 33 2012-01-23T08:51:44Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] On '''Board Game Arena''' you are playing "live" (real time). Then you has a delay to play your moves. Your initial delay at the beginning of a game is most of the time '''3 minutes'''. At each turn, or on specific occasion, you get an additional delay. If you have no more time to play, you will get a penalty and can become eligible to be expelled from the game. == Time to think == Your alloted time to think is displayed on the right of your player's name. When it's your turn to player, this time is also displayed at the top of the web page. == Game speed == Table administrator can make a choice between 4 game speed profile: * Fast * Normal * Slow * Without time limit The additional amount of time credited each turn depends on chosen game speed profile. Be careful to check game speed before game start to adapt your timing. Note: playing without time limit is strongly discouraged, except if you are playing with friends or to discover a new game. Remember that without time limit, you can't expel a player that stops playing. == Running out of time == As soon as you run out of time, you get a clock penalty. If you goes over your alloted time by more than 3/4/5 minutes (depending on game speed), any opponent can expel you from the game. Of course, it is strongly advised not to run out of time ... == Move time limit == In addition to your classical time to think, you have a limited time alloted for each move. When it's your turn to play, a red bar appears on top of the web page. It symbolized the remaining time limit for this move. The amount of time depends on game speed. If you goes over this limit, you become eligible to be expelled from the game. == "My opponent is too slow" == Each of us has different expectations on game speed. Please remember that as soon as a table has been set up at a given game speed, each player is allowed to use all his alloted time to think. If you want to play fast, set up or join table with "fast" mode only, but don't force an opponent to play when he has the right to do so. == "I would like to think a little" == If you are in a critical step of the game and want to take some time to think, you can click on the link "I would like to think a little" on the top right of the page. Thus, your opponents will receive a message and won't be thinking you are away from keyboard. Clicking on this link is not mandatory, but we encourage its use for courtesy. 82143c3b2c0b2426ec6fbc8637e3c739608e6bfb Rating 0 16 37 2012-01-23T08:53:27Z Sourisdudesert 1 Created page with " == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign . Example: 1648 http://fr.boardgamearena.com/theme..." wikitext text/x-wiki == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign . Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you loose a game. == How is my ELO ranking computed ? == The BGA ELO system is inspired by the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. Let's try to make it simple: the points you win/loose after each game depends on the ranking of your opponents. If you win at a table with opponents stronger than you, your ranking will increase a lot. If you loose at the same table, your ranking will decrease a little. And so on ... In case there are more than 2 players at the table, we take into account the final rank. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 6a46415cd42c733e8f6c21168baf058ec0295e5d 38 37 2012-01-23T08:54:06Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you loose a game. == How is my ELO ranking computed ? == The BGA ELO system is inspired by the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. Let's try to make it simple: the points you win/loose after each game depends on the ranking of your opponents. If you win at a table with opponents stronger than you, your ranking will increase a lot. If you loose at the same table, your ranking will decrease a little. And so on ... In case there are more than 2 players at the table, we take into account the final rank. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 9b83bb61530a3473b4ced7a0e88dac9b3121235a Reputation 0 17 39 2012-01-23T08:57:12Z Sourisdudesert 1 Created page with "[[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To a..." wikitext text/x-wiki [[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To achieve this goal, each player has a '''reputation profile''' which is the representation of his general attitude with others players. This profile is composed of 3 items: * Opinions from other players (http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png) * % of games you finished * % of games you finished with no clock penalties Seeing the reputation profile of a player, you are able to check if his behavior is good, if he won't quit the game before the end, and if he respect time limits. == How to increase my reputation / what makes my reputation decrease ? == At any time, you can give others players http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png marks. * a http://fr.boardgamearena.com/theme/img/common/reputation_up.png if you liked to play with him/her, and recommend to play with this player. * a http://fr.boardgamearena.com/theme/img/common/reputation_down.png if you disliked to play with him/her, and discourage others to play with this player. You can only give a single thumb (green or red) to a single player. If your opinion evolved you can click again on a thumb to reflect this change. As soon as you give a "red thumb" to a player, a warning message is displayed when you try to join a table where this player is. In this situation it is recommended to leave the game or to expel this player. By nature, opinions are subjectives. There is nothing we can do for you if you receive a for an unfair reason. However, we know by experience that this system has a lot of advantages and give a relevant information. == Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png == * Be polite ! Say at least "hello" and "good luck" at the beginning of the game. "good game" ("gg") at the end of the game. * When you need some time to think, click on "I would like to think a little" link. * Stay calm in any circumstances: it's a game. * Don't press your opponent to play if he has some time left. * If you really can't finish the game (this is not supposed to happened...), then say you are sorry and leave the game by your own to save your opponents time. * Be a good looser: if your loose because of bad luck or a strategy you dislike, don't blame the luck or your opponent (and don't give him a for this reason!). * Be a good winner: if your opponent makes a mistake you can signal it to him, but avoid triumphalism and provocation. == What are the consequences of a bad reputation ? == A bad reputation makes you suspect to your potential opponents. You will have to explain your situation, and maybe some players won't take the risk to play with you. It is also possible to filter players by reputation on a table. The worse your reputation is, the bigger difficulties you will have to find opponents. ccf3fbc039164bc5b2119e80643b725a1e974e87 40 39 2012-01-23T08:57:39Z Sourisdudesert 1 /* Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png */ wikitext text/x-wiki [[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To achieve this goal, each player has a '''reputation profile''' which is the representation of his general attitude with others players. This profile is composed of 3 items: * Opinions from other players (http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png) * % of games you finished * % of games you finished with no clock penalties Seeing the reputation profile of a player, you are able to check if his behavior is good, if he won't quit the game before the end, and if he respect time limits. == How to increase my reputation / what makes my reputation decrease ? == At any time, you can give others players http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png marks. * a http://fr.boardgamearena.com/theme/img/common/reputation_up.png if you liked to play with him/her, and recommend to play with this player. * a http://fr.boardgamearena.com/theme/img/common/reputation_down.png if you disliked to play with him/her, and discourage others to play with this player. You can only give a single thumb (green or red) to a single player. If your opinion evolved you can click again on a thumb to reflect this change. As soon as you give a "red thumb" to a player, a warning message is displayed when you try to join a table where this player is. In this situation it is recommended to leave the game or to expel this player. By nature, opinions are subjectives. There is nothing we can do for you if you receive a for an unfair reason. However, we know by experience that this system has a lot of advantages and give a relevant information. == Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png == * Be polite ! Say at least "hello" and "good luck" at the beginning of the game. "good game" ("gg") at the end of the game. * When you need some time to think, click on "I would like to think a little" link. * Stay calm in any circumstances: it's a game. * Don't press your opponent to play if he has some time left. * If you really can't finish the game (this is not supposed to happened...), then say you are sorry and leave the game by your own to save your opponents time. * Be a good looser: if your loose because of bad luck or a strategy you dislike, don't blame the luck or your opponent (and don't give him a http://fr.boardgamearena.com/theme/img/common/reputation_down.png for this reason!). * Be a good winner: if your opponent makes a mistake you can signal it to him, but avoid triumphalism and provocation. == What are the consequences of a bad reputation ? == A bad reputation makes you suspect to your potential opponents. You will have to explain your situation, and maybe some players won't take the risk to play with you. It is also possible to filter players by reputation on a table. The worse your reputation is, the bigger difficulties you will have to find opponents. 170ac86366603b161f7deb20712a920f5e460408 Translation guidelines 0 18 41 2012-01-23T08:58:49Z Sourisdudesert 1 Created page with "The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to ena..." wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to enable more people to discover and play boardgames, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10 years old nephew and he doesn't speak english yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated ? == Every string of text for the mainsite interface and for the games interfaces is 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometimes later... == Who should translate ? == This is important : only native speakers of a given language should translate in this language. When translating a game, the translator should know the game and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronomical rules usual for the gaming audience of their country. As Board Game Arena's team's mothertongue is french, we will take charge of the french translations. We will also release the first version of the english translation. As we are not perfect speakers of Shakespeare's language, these translation will be open for review and correction from native english speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot uncorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the translation forum (in english or in french), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into ? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in this language. == I fixed some translations, but they don't appear to have changed on the site ? == Translation files are updated each time we do a new release, so you have to wait until the next BGA release for your changes to appear on the site. Usually this should happen every week or two. == How long will it be possible to change the translations ? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating ? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward among all! == Translation tips == Use the 'TAB' key to go from one text box to another. This is easier than clicking. Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). When in doubt, leave a comment for the next translator. When you fix someone's translation, leave a comment if the reason for the change is not obvious. When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. f785003cc6caeb1c2fd8407b5ea381eb725dad8b 42 41 2012-01-23T08:59:19Z Sourisdudesert 1 /* About context */ wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to enable more people to discover and play boardgames, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10 years old nephew and he doesn't speak english yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated ? == Every string of text for the mainsite interface and for the games interfaces is 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometimes later... == Who should translate ? == This is important : only native speakers of a given language should translate in this language. When translating a game, the translator should know the game and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronomical rules usual for the gaming audience of their country. As Board Game Arena's team's mothertongue is french, we will take charge of the french translations. We will also release the first version of the english translation. As we are not perfect speakers of Shakespeare's language, these translation will be open for review and correction from native english speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot uncorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into ? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in this language. == I fixed some translations, but they don't appear to have changed on the site ? == Translation files are updated each time we do a new release, so you have to wait until the next BGA release for your changes to appear on the site. Usually this should happen every week or two. == How long will it be possible to change the translations ? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating ? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward among all! == Translation tips == Use the 'TAB' key to go from one text box to another. This is easier than clicking. Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). When in doubt, leave a comment for the next translator. When you fix someone's translation, leave a comment if the reason for the change is not obvious. When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. b99f4ae78569524581017328ac85c784a02229ee 43 42 2012-01-23T08:59:44Z Sourisdudesert 1 /* Translation tips */ wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to enable more people to discover and play boardgames, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10 years old nephew and he doesn't speak english yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated ? == Every string of text for the mainsite interface and for the games interfaces is 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometimes later... == Who should translate ? == This is important : only native speakers of a given language should translate in this language. When translating a game, the translator should know the game and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronomical rules usual for the gaming audience of their country. As Board Game Arena's team's mothertongue is french, we will take charge of the french translations. We will also release the first version of the english translation. As we are not perfect speakers of Shakespeare's language, these translation will be open for review and correction from native english speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot uncorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into ? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in this language. == I fixed some translations, but they don't appear to have changed on the site ? == Translation files are updated each time we do a new release, so you have to wait until the next BGA release for your changes to appear on the site. Usually this should happen every week or two. == How long will it be possible to change the translations ? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating ? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward among all! == Translation tips == * Use the 'TAB' key to go from one text box to another. This is easier than clicking. * Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). * When in doubt, leave a comment for the next translator. * When you fix someone's translation, leave a comment if the reason for the change is not obvious. * When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. 2ab2b11b7206e323ff840a76b8a125026e1e0344 Translationguidelines 0 19 44 2012-01-23T09:00:27Z Sourisdudesert 1 Redirected page to [[Translation Guidelines]] wikitext text/x-wiki #REDIRECT [[Translation Guidelines]] 08fc23949a4a226d9c81cccddc96fd7b9f4df0c0 45 44 2012-01-23T09:00:46Z Sourisdudesert 1 Redirected page to [[Translation guidelines]] wikitext text/x-wiki #REDIRECT [[Translation guidelines]] 9f3b026121a1f6a6e96bb1a66cffcbc391a612e0 MediaWiki:Sitenotice 8 20 46 2012-01-23T09:02:55Z Sourisdudesert 1 Created page with "<div style="font-size: 110%; background-color: ivory; padding: 0.5ex; border: 1px solid black; text-align: center;"> This is a documentation for [http://boardgamearena.com Boa..." wikitext text/x-wiki <div style="font-size: 110%; background-color: ivory; padding: 0.5ex; border: 1px solid black; text-align: center;"> This is a documentation for [http://boardgamearena.com Board Game Arena]: play board games online ! </div> eb809cbdb9e505f0fa399f3b2ceb6a38ecf4d423 Gamehelpstoneage 0 21 47 2012-01-23T09:11:20Z Sourisdudesert 1 Created page with " == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, with your civilizat..." wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, with your civilization cards. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players placed their people on "rings" (1 people per ring). Special rules with 2 players: * only 1 player in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. Special rules with 3 players: * maximum of 2 players in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. ===Use the actions of your placed people=== Each player uses all his placed people in any order, and realize the corresponding actions: * hunting grounds, forest, clay pit, quarry, and river: roll 1 dice per people and take corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * field: increase agriculture level. * tool: get one tool. * hut: get one additional people. * building: buy the building with resources and score points. * civilization card: buy the card with a number of resources depending on its position (1 to 4 resources). ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You can use tool to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If building cost is not specified you win points for each resources used depending on their values (3 for wood, 4 for brick, ...). ===Civilization card details=== Each card brings an immediate advantage (item on the top of the card) and some points during final scoring( item on the bottom of the card). Place the mouse cursor on each card to see details. ===Feed your people=== Each agriculture level bring automatically 1 food. You must use 1 food per people. You can use any resource to feed your people if there is not enough food. If you don't manage to feed your people: 10 points penalty. ===Game end=== The game end when: * there is no more civilization card at the beginning of a round * one building stack is empty at the end of a round During the final scoring round, players win points using their civilization cards. 34d16399aa3a8e5f4902df2ff48e9e81de1c043f Gamehelphaggis 0 22 48 2012-01-23T09:12:40Z Sourisdudesert 1 Created page with " == Goal == Empty your hand before the other players. Additional points may be earned by capturing cards during play and betting that you will be first to shed all of your ca..." wikitext text/x-wiki == Goal == Empty your hand before the other players. Additional points may be earned by capturing cards during play and betting that you will be first to shed all of your cards. == Rules summary == A valid card combination may be a set, a sequence or a bomb: * a "set" is a group of any number of cards of the same rank (ex: one "8", two "5", ...). * a "sequence" is a group of 3 or more cards of the same color with consecutive rank (ex: red 8, red 9, red 10) * a "sequence" can also be a group of 2 or more pairs or larger sets of consecutive rank sharing the same suits between sets (ex: blue 3, green 3, blue 4, green 4, blue 5, green 5) * a "bomb" is one of the following combination (ranked below from lowest to highest): ** 3-5-7-9 (in 4 different colors, "rainbow bomb") ** J-Q ** J-K ** Q-K ** J-Q-K ** 3-5-7-9 (in one color, "suited bomb") Face cards can be used as wild cards to replace any cards in a "set" or a "sequence". Each player starts a round with a Jack, a Queen and a King. These face cards are public. At your turn, you have to play a higher ranking combination with exactly the same type and same number of card that the first combination played. You can also pass. Bombs are an exception: you can play a bomb to beat any combination, except a higher bomb. When all but one player pass in succession, the player who played the highest combination capture all cards played. Important exception: if the highest combination is a bomb, cards are captured by the player with the next higher combination. Then, a new trick starts. The winner of the last trick leads the new trick with any combination. ===Scoring overview=== * At the moment you shed your last card: 5 points per card in the hand of the player who held the most cards. * Cards captured values: 2-4-6-8-10 = 0 point, 3-5-7-9 = 1 point, J = 2 points, Q = 3 points, K = 5 points. * 30 points for a successful "Big bet", 15 points for a successful "Little bet". Points from unsuccessful bets are added to scores of the round's winner and to player(s) who did not bet. da27e6a12b6310619db280f413a7b6b17f319f4f Gamehelppuertorico 0 23 49 2012-01-23T09:14:58Z Sourisdudesert 1 Created page with " == Goal == Be the player with the most victory points at the end of the game by collecting: * victory points earned for buildings * victory point tokens earned at the capta..." wikitext text/x-wiki == Goal == Be the player with the most victory points at the end of the game by collecting: * victory points earned for buildings * victory point tokens earned at the captain phase * conditional victory points earned at the end of the game for occupied large buildings In case of a tie, the player owning the most doubloons and goods is the winner. == Rules summary == The game is played over several rounds. At the start of a round, the governor selects a role, then each player in turn selects a role. At the end of the round, the governor token moves to the next player. When a role has been chosen, each player in turn plays the action for this role. Only the player who selected the role can use the role privilege. Available roles are the following: * Mayor: colonists set foot in the new world ! Privilege : the mayor can get one more colonist from the supply. Action : in turn, begining with the mayor, players get one colonist from the ship, until it is empty. Then players have to set colonists on their buildings and plantations. * Craftsman: goods are produced. Privilege : the craftsman can produce one more good of his choice. Action : produce goods for your occupied buildings and plantations. * Trader: goods are sold to the trading house. Privilege : the trader earns 1 extra doubloon if he sells. Action : sell one good the trading house doesn't have yet. * Settler : plantations settlement. Privilege : the settler can get a quarry instead of a plantation. Action : get a plantation chosen among those available. * Builder : buildings are bought and built. Privilege : the builder can get a building for 1 doubloon less than the regular price. Action : get a building chosen among those available. * Captain : victory points are won by shipping goods to the old world. Privilege : the captain earns one extra victory points if he ships some goods. Action : select a type of good to load on a cargo ship; 1 victory point is earned for each barrel of this type of good loaded on the ship. * Prospector : gold rush brings money ! Privilege : the prospector gets one doubloon from the bank. Action : none. Please also note that occupied violet buildings have modifier effects for role actions. End of game happens at the end of the round for which one of the following events comes to pass : * there is not enough colonists in the supply to refill the colonist ship at the end of the mayor phase * the last victory point token has been earned during the captain phase * at least one of the players built on his 12th and last free space in the city. == Playing online == Choosing a role : click on the role of your choice in the list on the right of your game board. Mayor role : accept or refuse to get an extra colonist from the supply. Colonists are then automatically recruited by players. Click on a building or a plantation to setup a colonist on it. Click on a colonist to send it back to San Juan (the counter for colonists in San Juan is situated in your player panel on the right of the page). Craftsman role : goods production is automated (counters for goods owned are in the player panel on the right of the page). Then, choose one extra good that you can produce as your privilege. Trader role : choose a good that you want to sell by clicking on the appropriate counter in your player panel. Settler role : click on the plantation (or quarry) that you want. Placement on your board is automated. Builder role : click on the building that you want to buy. Placement on your board is automated. Captain role : click on the cargo boat on which you want to ship some goods. Then choose the type of good that you want to ship by clicking on the appropriate counter in your player panel. At the end of the captain phase, if you have some goods to store (warehouse or windrose), click on the corresponding counter. Stored goods will be highlighted by a red frame. Prospector role : doubloon is earned immediately. Tooltips are available to give information on roles and buildings by hovering over game elements with the mouse. == Available variant == Balanced game: implements two game balance fixes giving each player an equal chance of winning as listed in the [http://en.wikipedia.org/wiki/Puerto_Rico_%28board_game%29 Puerto Rico (board game) Wikipedia page]. * The prices of the Factory and University buildings are swapped so that the Factory costs 8 doubloons and the University costs 7 doubloons * Any player that starts with a corn plantation starts with 1 doubloon less than the players that start with an indigo plantation. Have a good game ! 5a89fda7aa0b6e44383ce70410e470a81e1a8000 Gamehelpunclechestnuttablegype 0 24 50 2012-01-23T09:15:58Z Sourisdudesert 1 Created page with " == Goal == Move all of your pieces to the Home Row opposite your starting position. == Rules summary == On their turn, each player can: 1) Roll one of his pieces and plac..." wikitext text/x-wiki == Goal == Move all of your pieces to the Home Row opposite your starting position. == Rules summary == On their turn, each player can: 1) Roll one of his pieces and place it back where it was 2) Move one of the pieces according to the rules for the face-up side == Movement of the pieces: == * Flame: can move straight or diagonally in all directions * Book: can move straight in all directions * Swords: can move diagonnally in all directions * Tree: can move straight forward or backwards, and diagonally forward * Ear: cannot move at all ! * Hat: can move two steps straight then one step on the side, in all directions (like the knight in chess) A piece can jump over an adjacent piece if there is an open space on the other side of the piece being jumped in the direction of the jumping piece's movement. The first time a piece is jumped over during a turn, it has to be rolled. After a jump, all pieces (except for the hat) can go on jumping as long as there is another valid jump available from the landing space. A piece can freely move within its Home Row as long as it did not leave it. After it leaves though, it can't reenter its Home Row. A piece arrived into his destination Home Row cannot move afterwards. Nonetheless, it can always finish a series of jumps before coming to a rest. Playing online Reordering your pieces: before starting to play, each player can reorder his pieces in his Home Row. To accomplish this, you can drag and drop a piece over another to exchange their positions. When you are done, click on the 'I'm finished' link above the play space. When all players are finished reordering, the game starts. Select a piece: click on a piece. Available destinations for this piece (jumps comprised) are then highlighted. Move a piece: click on the destination you want to move to. After a jump, if it is possible to make another jump, corresponding destinations will be highlighted. You can also stop where you are by clicking on the 'I'm finished' link above the play space. Path selection: in order to move to a given destination, the hat can select between two moves. Either two steps forward then one on the side, or one step on the side then two steps forward. Distinct pieces may be rolled by following one path or another. Choosing the movement you want is done by clicking the link '1->2' or the link '2->1' (selected path is then highlighted), then by clicking the link 'I'm finished' above the play space. Available variants Random start: for a more random game, starting pieces are rolled (Ears are rolled again till getting only moving pieces). Rule of Chaos: to encourage more chaos, a player cannot cross the middle of the board with any of their pieces until their starting Home Row has been emptied: all pieces have to be put in play at the same time. Random start & Rule of Chaos : combination of the two previous variants. Have a good game ! 47a14dc24dc2483015390cae73fbdbd33cb69c3b Gamehelpunclechestnuttablegype 0 24 51 50 2012-01-23T09:16:52Z Sourisdudesert 1 wikitext text/x-wiki == Goal == Move all of your pieces to the Home Row opposite your starting position. == Rules summary == On their turn, each player can: * 1°) Roll one of his pieces and place it back where it was * 2°) Move one of the pieces according to the rules for the face-up side == Movement of the pieces: == * Flame: can move straight or diagonally in all directions * Book: can move straight in all directions * Swords: can move diagonnally in all directions * Tree: can move straight forward or backwards, and diagonally forward * Ear: cannot move at all ! * Hat: can move two steps straight then one step on the side, in all directions (like the knight in chess) A piece can jump over an adjacent piece if there is an open space on the other side of the piece being jumped in the direction of the jumping piece's movement. The first time a piece is jumped over during a turn, it has to be rolled. After a jump, all pieces (except for the hat) can go on jumping as long as there is another valid jump available from the landing space. A piece can freely move within its Home Row as long as it did not leave it. After it leaves though, it can't reenter its Home Row. A piece arrived into his destination Home Row cannot move afterwards. Nonetheless, it can always finish a series of jumps before coming to a rest. == Playing online == '''Reordering your pieces''': before starting to play, each player can reorder his pieces in his Home Row. To accomplish this, you can drag and drop a piece over another to exchange their positions. When you are done, click on the 'I'm finished' link above the play space. When all players are finished reordering, the game starts. '''Select a piece''': click on a piece. Available destinations for this piece (jumps comprised) are then highlighted. '''Move a piece''': click on the destination you want to move to. After a jump, if it is possible to make another jump, corresponding destinations will be highlighted. You can also stop where you are by clicking on the 'I'm finished' link above the play space. '''Path selection''': in order to move to a given destination, the hat can select between two moves. Either two steps forward then one on the side, or one step on the side then two steps forward. Distinct pieces may be rolled by following one path or another. Choosing the movement you want is done by clicking the link '1->2' or the link '2->1' (selected path is then highlighted), then by clicking the link 'I'm finished' above the play space. == Available variants == '''Random start''': for a more random game, starting pieces are rolled (Ears are rolled again till getting only moving pieces). '''Rule of Chaos''': to encourage more chaos, a player cannot cross the middle of the board with any of their pieces until their starting Home Row has been emptied: all pieces have to be put in play at the same time. '''Random start & Rule of Chaos''' : combination of the two previous variants. Have a good game ! e0e1c7bf1bdc07eca3c7b1aa2d2d463ff891abe4 79 51 2012-03-11T14:43:52Z Een 3 wikitext text/x-wiki == Goal == Move all of your pieces to the Home Row opposite your starting position. == Rules summary == On their turn, each player can: # Roll one of his pieces and place it back where it was # Move one of the pieces according to the rules for the face-up side == Movement of the pieces: == * Flame: can move straight or diagonally in all directions * Book: can move straight in all directions * Swords: can move diagonnally in all directions * Tree: can move straight forward or backwards, and diagonally forward * Ear: cannot move at all ! * Hat: can move two steps straight then one step on the side, in all directions (like the knight in chess) A piece can jump over an adjacent piece if there is an open space on the other side of the piece being jumped in the direction of the jumping piece's movement. The first time a piece is jumped over during a turn, it has to be rolled. After a jump, all pieces (except for the hat) can go on jumping as long as there is another valid jump available from the landing space. A piece can freely move within its Home Row as long as it did not leave it. After it leaves though, it can't reenter its Home Row. A piece arrived into his destination Home Row cannot move afterwards. Nonetheless, it can always finish a series of jumps before coming to a rest. == Playing online == '''Reordering your pieces''': before starting to play, each player can reorder his pieces in his Home Row. To accomplish this, you can drag and drop a piece over another to exchange their positions. When you are done, click on the 'I'm finished' link above the play space. When all players are finished reordering, the game starts. '''Select a piece''': click on a piece. Available destinations for this piece (jumps comprised) are then highlighted. '''Move a piece''': click on the destination you want to move to. After a jump, if it is possible to make another jump, corresponding destinations will be highlighted. You can also stop where you are by clicking on the 'I'm finished' link above the play space. '''Path selection''': in order to move to a given destination, the hat can select between two moves. Either two steps forward then one on the side, or one step on the side then two steps forward. Distinct pieces may be rolled by following one path or another. Choosing the movement you want is done by clicking the link '1->2' or the link '2->1' (selected path is then highlighted), then by clicking the link 'I'm finished' above the play space. == Available variants == '''Random start''': for a more random game, starting pieces are rolled (Ears are rolled again till getting only moving pieces). '''Rule of Chaos''': to encourage more chaos, a player cannot cross the middle of the board with any of their pieces until their starting Home Row has been emptied: all pieces have to be put in play at the same time. '''Random start & Rule of Chaos''' : combination of the two previous variants. '''Have a good game !''' cf24749138ddb9e1bb14c0a6a3ff344a8f7e2684 Gamehelpgosu 0 25 52 2012-01-23T09:19:41Z Sourisdudesert 1 Created page with "Need some help ? Join [http://www.gosulair.fr/index.php Gosu player's community on Gosulair.fr] == Victory == You win when you have 3 Victory Points or when you complete a s..." wikitext text/x-wiki Need some help ? Join [http://www.gosulair.fr/index.php Gosu player's community on Gosulair.fr] == Victory == You win when you have 3 Victory Points or when you complete a special victory condition. == Rules summary == During the Round, players play in turns, clockwise. The player with the Advantage Token starts to play. When all players have passed, the Round ends and the Great Battle takes place. ===Great Battle=== Add up the military value of all your goblins. The owner of the most powerful army wins the Battle and scores a Victory Point. In case of a tie during the Battle, the player with the Advantage Token wins. All armies stay put and the players keep their hand of cards. ===One turn, one action=== * Play a goblin. * Mutate a goblin. * Spend 1 Activation Token to draw 1 card. * Spend 2 Activation Tokens to draw 3 cards. * Play an Activation Token on a goblin to activate its power (only 1 Token allowed per card). * Pass (the player who pass has no turn until the next Round.). ===Goblins=== Every goblin in a Level are played from left to right in one row. Rows are ordered by ascending level from the bottom to the top. You can't play more than 5 goblins per row. '''Bakutos (level I)''' * The first Bakuto is always free. * Play a Bakuto is free if a Bakuto from the same clan is already in play. * To play a Bakuto from a new clan, you have to discard 2 cards. '''Heroes (level II)''' * No more Heroes than Bakutos. * In order to play a Hero, a Bakuto from the same clan must be in your army (no need to have him above the Bakuto). '''Ōzekis (level III)''' * No more Ōzekis than Heroes. * In order to play an Ōzeki, a Hero and a Bakuto from the same clan must be in your army. ===Mutation=== You can mutate a goblin in another different goblin on the same Level if you pay the Mutation Cost of the card: Name the card to mutate. Name et set aside the card that comes into play. Discard the mutated card. Apply any triggered effect. Play the mutating card. Apply any triggered effect. Resolve Mutating effect. A mutated carte is not « destroyed ». Zombie Mutation: the mutating goblin may come from the discard pile. Goblins powers & details A FREE card has no cards above nor on its right. Carte emprisonnée : retournée, elle n'a ni pouvoir ni valeur militaire ni clan, mais conserve son nom et sa place dans l'armée. Costs : the card costs (play, mutate, ...) are payed with cards discarded from your hand. When the draw pile is empty and you have to draw, you shuffle the discard pile and make it the new draw pile. The bonus mentionned into brackets (+...) apply if some opponent has more victory points. The discard pile receive the discarded, destroyed or mutated cards. Any player can browse it anytime. If a player wins his third Victory Point in a Round, he wins the game immediatly. Board Game Arena would like to thanks mAxAttAck de gosulair.fr for this game help. 6b6358222feb2e53c7791d8d0c33a17076519651 53 52 2012-01-23T09:20:49Z Sourisdudesert 1 wikitext text/x-wiki Need some help ? Join [http://www.gosulair.fr/index.php Gosu player's community on Gosulair.fr] == Victory == You win when you have 3 Victory Points or when you complete a special victory condition. == Rules summary == During the Round, players play in turns, clockwise. The player with the Advantage Token starts to play. When all players have passed, the Round ends and the Great Battle takes place. ===Great Battle=== Add up the military value of all your goblins. The owner of the most powerful army wins the Battle and scores a Victory Point. In case of a tie during the Battle, the player with the Advantage Token wins. All armies stay put and the players keep their hand of cards. ===One turn, one action=== * Play a goblin. * Mutate a goblin. * Spend 1 Activation Token to draw 1 card. * Spend 2 Activation Tokens to draw 3 cards. * Play an Activation Token on a goblin to activate its power (only 1 Token allowed per card). * Pass (the player who pass has no turn until the next Round.). ===Goblins=== Every goblin in a Level are played from left to right in one row. Rows are ordered by ascending level from the bottom to the top. You can't play more than 5 goblins per row. '''Bakutos (level I)''' * The first Bakuto is always free. * Play a Bakuto is free if a Bakuto from the same clan is already in play. * To play a Bakuto from a new clan, you have to discard 2 cards. '''Heroes (level II)''' * No more Heroes than Bakutos. * In order to play a Hero, a Bakuto from the same clan must be in your army (no need to have him above the Bakuto). '''Ōzekis (level III)''' * No more Ōzekis than Heroes. * In order to play an Ōzeki, a Hero and a Bakuto from the same clan must be in your army. ===Mutation=== You can mutate a goblin in another different goblin on the same Level if you pay the Mutation Cost of the card: * Name the card to mutate. * Name et set aside the card that comes into play. * Discard the mutated card. * Apply any triggered effect. * Play the mutating card. * Apply any triggered effect. * Resolve Mutating effect. A mutated carte is not « destroyed ». Zombie Mutation: the mutating goblin may come from the discard pile. ===Goblins powers & details=== A FREE card has no cards above nor on its right. Trapped card : no power, no value, no clan. It keeps its name and its place in the army. Costs : the card costs (play, mutate, ...) are payed with cards discarded from your hand. When the draw pile is empty and you have to draw, you shuffle the discard pile and make it the new draw pile. The bonus mentionned into brackets (+...) apply if some opponent has more victory points. The discard pile receive the discarded, destroyed or mutated cards. Any player can browse it anytime. If a player wins his third Victory Point in a Round, he wins the game immediatly. Board Game Arena would like to thanks mAxAttAck de gosulair.fr for this game help. 2de59874bb4c8b039c82523b624075e1a4da29c1 66 53 2012-02-06T01:12:27Z Jleidich 100 /* Mutation */ wikitext text/x-wiki Need some help ? Join [http://www.gosulair.fr/index.php Gosu player's community on Gosulair.fr] == Victory == You win when you have 3 Victory Points or when you complete a special victory condition. == Rules summary == During the Round, players play in turns, clockwise. The player with the Advantage Token starts to play. When all players have passed, the Round ends and the Great Battle takes place. ===Great Battle=== Add up the military value of all your goblins. The owner of the most powerful army wins the Battle and scores a Victory Point. In case of a tie during the Battle, the player with the Advantage Token wins. All armies stay put and the players keep their hand of cards. ===One turn, one action=== * Play a goblin. * Mutate a goblin. * Spend 1 Activation Token to draw 1 card. * Spend 2 Activation Tokens to draw 3 cards. * Play an Activation Token on a goblin to activate its power (only 1 Token allowed per card). * Pass (the player who pass has no turn until the next Round.). ===Goblins=== Every goblin in a Level are played from left to right in one row. Rows are ordered by ascending level from the bottom to the top. You can't play more than 5 goblins per row. '''Bakutos (level I)''' * The first Bakuto is always free. * Play a Bakuto is free if a Bakuto from the same clan is already in play. * To play a Bakuto from a new clan, you have to discard 2 cards. '''Heroes (level II)''' * No more Heroes than Bakutos. * In order to play a Hero, a Bakuto from the same clan must be in your army (no need to have him above the Bakuto). '''Ōzekis (level III)''' * No more Ōzekis than Heroes. * In order to play an Ōzeki, a Hero and a Bakuto from the same clan must be in your army. ===Mutation=== You can mutate a goblin in another different goblin on the same Level if you pay the Mutation Cost of the card: * Name the card to mutate. * Name and set aside the card that comes into play. * Discard the mutated card. * Apply any triggered effect. * Play the mutating card. * Apply any triggered effect. * Resolve Mutating effect. A mutated card is not « destroyed ». Zombie Mutation: the mutating goblin may come from the discard pile. ===Goblins powers & details=== A FREE card has no cards above nor on its right. Trapped card : no power, no value, no clan. It keeps its name and its place in the army. Costs : the card costs (play, mutate, ...) are payed with cards discarded from your hand. When the draw pile is empty and you have to draw, you shuffle the discard pile and make it the new draw pile. The bonus mentionned into brackets (+...) apply if some opponent has more victory points. The discard pile receive the discarded, destroyed or mutated cards. Any player can browse it anytime. If a player wins his third Victory Point in a Round, he wins the game immediatly. Board Game Arena would like to thanks mAxAttAck de gosulair.fr for this game help. a62e06b222c75ef7b96e85f1dc657b36d24fcd85 67 66 2012-02-06T01:14:28Z Jleidich 100 /* Goblins powers & details */ wikitext text/x-wiki Need some help ? Join [http://www.gosulair.fr/index.php Gosu player's community on Gosulair.fr] == Victory == You win when you have 3 Victory Points or when you complete a special victory condition. == Rules summary == During the Round, players play in turns, clockwise. The player with the Advantage Token starts to play. When all players have passed, the Round ends and the Great Battle takes place. ===Great Battle=== Add up the military value of all your goblins. The owner of the most powerful army wins the Battle and scores a Victory Point. In case of a tie during the Battle, the player with the Advantage Token wins. All armies stay put and the players keep their hand of cards. ===One turn, one action=== * Play a goblin. * Mutate a goblin. * Spend 1 Activation Token to draw 1 card. * Spend 2 Activation Tokens to draw 3 cards. * Play an Activation Token on a goblin to activate its power (only 1 Token allowed per card). * Pass (the player who pass has no turn until the next Round.). ===Goblins=== Every goblin in a Level are played from left to right in one row. Rows are ordered by ascending level from the bottom to the top. You can't play more than 5 goblins per row. '''Bakutos (level I)''' * The first Bakuto is always free. * Play a Bakuto is free if a Bakuto from the same clan is already in play. * To play a Bakuto from a new clan, you have to discard 2 cards. '''Heroes (level II)''' * No more Heroes than Bakutos. * In order to play a Hero, a Bakuto from the same clan must be in your army (no need to have him above the Bakuto). '''Ōzekis (level III)''' * No more Ōzekis than Heroes. * In order to play an Ōzeki, a Hero and a Bakuto from the same clan must be in your army. ===Mutation=== You can mutate a goblin in another different goblin on the same Level if you pay the Mutation Cost of the card: * Name the card to mutate. * Name and set aside the card that comes into play. * Discard the mutated card. * Apply any triggered effect. * Play the mutating card. * Apply any triggered effect. * Resolve Mutating effect. A mutated card is not « destroyed ». Zombie Mutation: the mutating goblin may come from the discard pile. ===Goblins powers & details=== A FREE card has no cards above it nor to its right. Trapped card : no power, no value, no clan. It keeps its name and place in the army. Costs : the card costs (play, mutate, ...) are payed with cards discarded from your hand. When the draw pile is empty and you have to draw, you shuffle the discard pile and make it the new draw pile. The bonus mentioned in brackets (+...) apply if some opponent has more victory points. The discard pile receives the discarded, destroyed or mutated cards. Any player can browse it anytime. If a player wins his third Victory Point in a Round, he wins the game immediatly. Board Game Arena would like to thanks mAxAttAck de gosulair.fr for this game help. aeee202f11e1fef25f50b04ff56e9895ee5263d2 Gamehelptroyes 0 26 54 2012-01-23T09:25:01Z Sourisdudesert 1 Created page with " == Goal == Be the player with the most victory points at the end of the game. == Rules summary == (This rules summary is based on the game help written by [http://boardgam..." wikitext text/x-wiki == Goal == Be the player with the most victory points at the end of the game. == Rules summary == (This rules summary is based on the game help written by [http://boardgamegeek.com/user/pregremlin Andrew Agard] for Board Game Geek, under Creative Commons license. Please see [http://boardgamegeek.com/filepage/66976/complete-rules-reference-1-page-fold-in-half original file] here for details. Thank you Andrew !) ===Initial Placement=== * In clockwise order place a citizen in empty space of one building * Continue in counter clockwise order from last player and so on until all citizens placed ===Game play=== ====Phase 0: Reveal the Activity cards==== Reveal activity card for each color corresponding to current round (first 3 rounds only) ====Phase 1: Income and salaries==== Receive 10 deniers and pay 1 per Bishopric and 2 per Palace citizen or lose 2 VP ====Phase 2: Assembling the workforce==== Roll yellow/white/red die per citizen in City Hall/Bishopric/Palace and place in district ====Phase 3: Events==== Reveal top red and white or yellow Event and place to right of queue (unlimited Events) Events take effect from left to right * Military: start player takes 1 black die per die symbol * Other events: see annex (can’t execute: execute as much as possible and lose 2 VP) After Events, roll black dice and counter: * Start player must counter highest-value with one or more dice form district. Total value must be >= die. Discard dice. May counter several dice at once * Gain 1 influence per dice countered (can’t counter: discard die and lose 2 VP) * In order players must counter highest remaining until all countered * Use any color dice. Double red dice. Can’t buy dice or use activity cubes ====Phase 4: Actions==== See below. ====Phase 5: End of the round==== Receive deniers from district Return citizens lying on buildings to personal supplies Return unused dice to general supply Pass start player card left. ===Actions=== In order each player can use 1-3 matching dice for one action or pass. Round ends when no dice available or all players have passed May pay player or bank (gray) to use dice. If using 1/2/3 dice pay 2/4/6 deniers per dice ====Activate Activity Card==== Must have tradesman. Hire if necessary by paying indicated amount in deniers. Place citizen on free space (or illustration if full) from personal supply or any board location * 1 tradesman per player per card * Must activate at least once if tradesman hired * Citizens on card cannot be moved to newly freed space Immediate effect: activation cost (round down) determines color and use of dice Delayed effect: place cubes equal to activation cost. Use later (one cube per action) ====Construct Cathedral==== * Use 1-3 white dice to place 1-3 cubes on same-numbered construction site * Must place on lower levels before placing in higher levels for each set of valued spaces * Gain 1 VP and 1 or 2 Influence for each cube placed in spaces 1-3 or 4-6 ====Combat Events==== * Activation cost (round down) defines dice and number of cubes to place on card * Place cubes on small banner starting with upper left. Gain 1 influence for each. Only place on a single card each action and can’t place more cubes than banners Event countered when banners filled * Most cubes earns higher reward (tied: total rounded down, 2nd earns nothing). If only 1 player on card earn both rewards. * 2nd most cubes earns smaller reward (tied: total rounded down) * Most cubes takes card (tied: player who placed first). Discard if neutral has most * Marauding: rewards given, cubes removed, and then event is available again ====Place a citizen on building==== * Use exactly one die to place one citizen from personal supply or any board location on first space of matching building row or space corresponding to die color and value * Shift existing citizens to right. Citizens pushed off are laid on building illustration * If already have expelled citizen nobody can expel your citizens from that building ====Use Agriculture==== * Gain number of deniers equal to total value divided by 2 (round down) ===Pass=== * If dice still in any city square, pass and receive 2 deniers which are placed in district * Each turn add another denier to district Have a good game ! fbdfaed8129e77bd038dee3623968940c24674a0 Gamehelptobago 0 27 55 2012-01-23T09:26:14Z Sourisdudesert 1 Created page with " == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player..." wikitext text/x-wiki == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not is sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map indicate show where the treasure can be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or one space only when your ATV goes from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after sharing the treasure for which the deck of treasure cards has been exhausted. Have a good game ! 1cf926fcbeaf776e08a8d7a0e3228b35b9f0c542 81 55 2012-03-11T14:48:48Z Een 3 wikitext text/x-wiki == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not is sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map indicate show where the treasure can be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or one space only when your ATV goes from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after sharing the treasure for which the deck of treasure cards has been exhausted. '''Have a good game !''' b3a0671ef523f43497b67a815ac6f839a04dbd1b 87 81 2012-03-31T00:48:04Z Avron 453 /* 1) Play a clue card from his hand */ wikitext text/x-wiki == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map indicate where the treasure can be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or one space only when your ATV goes from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after sharing the treasure for which the deck of treasure cards has been exhausted. '''Have a good game !''' 1ce82af1085c3662b22e442d6634e1ed2c342517 Gamehelpamyitis 0 28 56 2012-01-23T09:29:49Z Sourisdudesert 1 Created page with " == Victory == The player with the most victory points (VP) wins the game. == Rules summary == Thank you [http://boardgamegeek.com/user/sdetoni Steven] for this game help ..." wikitext text/x-wiki == Victory == The player with the most victory points (VP) wins the game. == Rules summary == Thank you [http://boardgamegeek.com/user/sdetoni Steven] for this game help (original file is [http://boardgamegeek.com/filepage/64197/synopses-of-amyitis-rules there]). Game starts, and recycles the 3 phases, setup, action, maintenance, until: * 4 or less garden tiles are left after a maintenance phase for 3/4 players. * 3 or less garden tiles are left after a maintenance phase for 2 players. ===Setup Phase=== Shuffle all Craftsmen cards and Layout as below. * 2 players: 2 groups of three cards. * 3 players: 3 groups of three cards. * 4 players: 4 groups of three cards. Players with Bankers earn Income (1 coin, 2 coins, or 2 coins & 2 VPs). ===Action Phase=== '''Passing''' Place cube on Pass space; each time that player Passes afterward, he earns 1 coin. '''Purchasing Workers''' Recruit a Craftsman from a set; the first in a set (3 horizontal cards) costs no coins, the second cost 1 coin, and the third costs 2 coins. Turn over card to display coin upon chosen card, which signifies the cost of the next card. Merchant: Take 1 camel into the players supply. Engineer: Place 1 cube of a player on an irrigation marker and get 2 VPs. The cube placement must trace an unbroken path of irrigation cubes to the river. Priest: Place 1 cube of a player into one Temple’s line of petitioners (each Temple will earn something in the Maintenance Phase). Place cube from left and shift all other cubes to the right. Cubes that drop off from the right are placed back into supply. Farmer: Place 1 cube of a player on the left most open field space and take that Resource into Supply. If that Resource is Wine, the field is cleared and whoever had a majority of cubes in that field gets a Gardener card if one is available. If tied, the cube colour furthest to the right wins the gardener card. '''Trading/Caravanning''' Move the Caravan by paying at least 1 Camel token and moving as many spaces as Camels paid plus up to as many spaces as allowed by the current Caravan card. A Caravan cannot be moved to a place where a player cannot fulfil the demands of that city. If the Caravan moves into Babylon either 1 Resource token must be given up for 3 VPs or 2 resource tokens can be given for 6 VPs; that player also places one irrigation cube. In some cities a player can hire Bankers and Caravaneers, as well as expand their Palace (bonus one-time VPs are added when cards are purchased). Pay the required resource to acquire these upgrade cards. In four of the cities there are Plants available. Some Plants are better than others and cost more (i.e. 2 resource tokens instead of 1). There are four levels to the Hanging Gardens, with level 1 Plants being able to be planted on its first level. Level 2 Plants may also be planted in level 1 Hanging Gardens. Gardeners can improve a Plant’s quality, allowing level 1 Plants to be planted on the Wonder’s second level or even its third; or allowing a level 2 Plant to be planted on the third level. That is, 1 or more gardener cards can be used on a plant to increases its quality. The Hanging Gardens’ fourth level requires a level 3 plant only. As soon as Plants are paid for, they are planted. The player who bought the Plant gains the prizes on the Wonder’s tile. A player who controls the irrigation around that tile (i.e. the most number of their colour cubes) scores VPs equal to the Plant’s initial level (not including spent gardener cards). If there is tie, then no VPs are given. Neutral grey cubes are added to empty irrigation spots of adjacent planted tile areas. Once bonuses and VPs have been award, the plant card is turned over in the caravan board to show a different plant on offer for that city/area. ===Maintenance Phase=== Temple Procession is controlled by the last player in the round; they place 1 cube of that players colour into one of the Temples of their choice, and 1 neutral cube into each of the other temples (i.e. 2 grey cubes total). Temples provide benefits to 1 player in a 2 player game, or 2 players in a 3-4 player game; ties for majority are broken by whose cube is closest to the right/exit. Award bonuses for each temple: Ishtar 1st Gets choice of a camel token or a coin. 2nd Gets what the 1st place didn’t want. Marduk 1st Gets 2 VPs. 2nd Gets 1 VPs. Tammouz 1st Gets to add a clue to the resource field of their choice. 2nd Gets to swap one of their resource tokens from supply, but not for wine. Players check goods in their Supply for resource spoilage and adjust the token number they can keep between major game rounds. Level 0,1 Caravaneers can keep up to 2 resource tokens. Level 2 Caravaneers can keep up to 4 resource tokens. The Starting Player card is passed clockwise. Re-shuffle craftsmen cards; go to setup phase to complete another game round. ===End Game=== Game ends when the follow conditions are met for the number people playing. 2 Players: When 3 garden tiles are left or less at the end of major game round. 5 or 6 Wonder tiles gained add additional 5 VPs, 7 Wonder tiles gained, add 10 VPs. 3 Players: When 4 garden tiles are left or less at the end of major game round. 4 or 5 Wonder tiles gained add additional 5 VPs, 6 Wonder tiles gained, add 10 VPs. 4 Players: When 4 garden tiles are left or less at the end of major game round. 3 or 4 Wonder tiles gained add additional 5 VPs, 5 Wonder tiles gained, add 10 VPs. Each player scores 1 additional VP for each resource token remaining in his stock (nothing for the camels and the coins). Total points = Current VPs + Resources Token Left + Bonus for number of garden tiles planted. 7f310513787f643d738ab499101925bd3ba58b17 Translation guidelines 0 18 57 43 2012-01-23T18:24:35Z Een 3 /* I fixed some translations, but they don't appear to have changed on the site ? */ wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to enable more people to discover and play boardgames, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10 years old nephew and he doesn't speak english yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated ? == Every string of text for the mainsite interface and for the games interfaces is 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometimes later... == Who should translate ? == This is important : only native speakers of a given language should translate in this language. When translating a game, the translator should know the game and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronomical rules usual for the gaming audience of their country. As Board Game Arena's team's mothertongue is french, we will take charge of the french translations. We will also release the first version of the english translation. As we are not perfect speakers of Shakespeare's language, these translation will be open for review and correction from native english speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot uncorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into ? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in this language. == I fixed some translations, but they don't appear to have changed on the site ? == Translation files are updated by a nightly batch, so you just have to wait till the morrow for your changes to appear on the site. == How long will it be possible to change the translations ? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating ? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward among all! == Translation tips == * Use the 'TAB' key to go from one text box to another. This is easier than clicking. * Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). * When in doubt, leave a comment for the next translator. * When you fix someone's translation, leave a comment if the reason for the change is not obvious. * When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. f7af8e4384b62aa3f98aed12555045fe22559d9a 63 57 2012-01-28T05:00:40Z Azraeldeadlight 63 /* Who should translate ? */ wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena in any language, in order to enable more people to discover and play boardgames, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10 years old nephew and he doesn't speak english yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated ? == Every string of text for the mainsite interface and for the games interfaces is 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometimes later... == Who should translate ? == This is important: only native speakers of a given language should translate in this language. When translating a game, the translator should know the game and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronominal rules usual for the gaming audience of their country. As Board Game Arena's team's mother tongue is French, we will take charge of the French translations. We will also release the first version of the English translation. As we are not perfect speakers of Shakespeare's language, these translations will be open for review and correction by native English speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot uncorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into ? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in this language. == I fixed some translations, but they don't appear to have changed on the site ? == Translation files are updated by a nightly batch, so you just have to wait till the morrow for your changes to appear on the site. == How long will it be possible to change the translations ? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating ? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward among all! == Translation tips == * Use the 'TAB' key to go from one text box to another. This is easier than clicking. * Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). * When in doubt, leave a comment for the next translator. * When you fix someone's translation, leave a comment if the reason for the change is not obvious. * When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. 03a81a5f108268605fffaeaf1179a98eeeed1e12 68 63 2012-02-07T07:32:09Z Laszlosaurus 116 Great idea to wikify everything! wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena into any language, in order to enable more people to discover and play board games, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10-year-old nephew and he doesn't speak English yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated? == Every string of text for the main site interface and for the games' interfaces are 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometime later... == Who should translate? == This is important: only translate text into a given language if you are a native speaker of the language. When translating a game, the translator should know the game thoroughly and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronominal rules usual for the gaming audience of their country. As Board Game Arena's team's mother tongue is French, we will take charge of the French translations. We will also release the first version of the English translation. As we are not perfect speakers of Shakespeare's language, these translations will be open for review and correction by native English speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot incorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in the language. == I fixed some translations, but they don't appear to have changed on the site == Translation files are updated nightly, so you just have to wait till the morrow for your changes to appear on the site. == How long will it be possible to change the translations? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward of all! == Translation tips == * Use the 'TAB' key to go from one text box to another. This is easier than clicking. * Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). * When in doubt, leave a comment for the next translator. * When you fix someone's translation, leave a comment if the reason for the change is not obvious. * When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. 5342971093e24707f58f475c7b88ca60b9f6c8e5 Gamehelpstoneage 0 21 58 47 2012-01-26T03:44:39Z Oedin 35 /* Game end */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, with your civilization cards. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players placed their people on "rings" (1 people per ring). Special rules with 2 players: * only 1 player in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. Special rules with 3 players: * maximum of 2 players in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. ===Use the actions of your placed people=== Each player uses all his placed people in any order, and realize the corresponding actions: * hunting grounds, forest, clay pit, quarry, and river: roll 1 dice per people and take corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * field: increase agriculture level. * tool: get one tool. * hut: get one additional people. * building: buy the building with resources and score points. * civilization card: buy the card with a number of resources depending on its position (1 to 4 resources). ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You can use tool to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If building cost is not specified you win points for each resources used depending on their values (3 for wood, 4 for brick, ...). ===Civilization card details=== Each card brings an immediate advantage (item on the top of the card) and some points during final scoring( item on the bottom of the card). Place the mouse cursor on each card to see details. ===Feed your people=== Each agriculture level bring automatically 1 food. You must use 1 food per people. You can use any resource to feed your people if there is not enough food. If you don't manage to feed your people: 10 points penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round During the final scoring round, players win points using their civilization cards. f95d7d0ce2d15cea166eddeeb542ba0fc8c1d59c 59 58 2012-01-26T03:46:04Z Oedin 35 /* Feed your people */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, with your civilization cards. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players placed their people on "rings" (1 people per ring). Special rules with 2 players: * only 1 player in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. Special rules with 3 players: * maximum of 2 players in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. ===Use the actions of your placed people=== Each player uses all his placed people in any order, and realize the corresponding actions: * hunting grounds, forest, clay pit, quarry, and river: roll 1 dice per people and take corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * field: increase agriculture level. * tool: get one tool. * hut: get one additional people. * building: buy the building with resources and score points. * civilization card: buy the card with a number of resources depending on its position (1 to 4 resources). ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You can use tool to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If building cost is not specified you win points for each resources used depending on their values (3 for wood, 4 for brick, ...). ===Civilization card details=== Each card brings an immediate advantage (item on the top of the card) and some points during final scoring( item on the bottom of the card). Place the mouse cursor on each card to see details. ===Feed your people=== Each agriculture level automatically give you 1 food. You must use 1 food per person. You can use any resource to feed your people if there is not enough food. If you don't manage to feed your people, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round During the final scoring round, players win points using their civilization cards. aa2efd8d0fcce02506a62d8dae4e1b0669bb8239 60 59 2012-01-26T03:47:06Z Oedin 35 /* Buildings */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, with your civilization cards. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players placed their people on "rings" (1 people per ring). Special rules with 2 players: * only 1 player in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. Special rules with 3 players: * maximum of 2 players in each of the following: forest, clay pit, quarry, and river. * only 2 of the 3 places: tool maker, hut, and field may be filled in each round. ===Use the actions of your placed people=== Each player uses all his placed people in any order, and realize the corresponding actions: * hunting grounds, forest, clay pit, quarry, and river: roll 1 dice per people and take corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * field: increase agriculture level. * tool: get one tool. * hut: get one additional people. * building: buy the building with resources and score points. * civilization card: buy the card with a number of resources depending on its position (1 to 4 resources). ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You can use tool to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If the building cost is not specified, you win points for each of the resources used, depending on their values (3 for wood, 4 for brick, ...). ===Civilization card details=== Each card brings an immediate advantage (item on the top of the card) and some points during final scoring( item on the bottom of the card). Place the mouse cursor on each card to see details. ===Feed your people=== Each agriculture level automatically give you 1 food. You must use 1 food per person. You can use any resource to feed your people if there is not enough food. If you don't manage to feed your people, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round During the final scoring round, players win points using their civilization cards. 6e501537cfc05012c6080c793b3e5560152b5039 97 60 2012-05-18T23:55:17Z Spacediver 718 slight rewrite, according to first learning experience wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, according to civilization cards acquired by you. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players place groups of their people in places, occupying each "ring" by one people (except for the forest place having no rings). Special rules for game with 2 players only: * no more than 1 player may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field Special rules for game with 3 players only: * no more than 2 players may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field ===Use the actions of your placed people=== Each player uses all his placed people in any order, and perform the corresponding actions: * '''hunting grounds, forest, clay pit, quarry, and river''': roll 1 dice per people placed and acquire corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * '''field''': increase agriculture level. * ''tool maker''': get one tool point (new tool is added, up to 3 in total, after that these tools are upgraded). * '''hut''': get one additional people. * '''building card''': buy the building with resources, scoring some points. * '''civilization card''': buy the card with a number of resources (of any kind) depending on its position (1 to 4 resources depicted above the card). Then the immediate effect of the card is applied. ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You may use tools to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If the building cost is not fixed (question mark in the corner of the card), you win points for each of the resources used to acquire this building, depending on their values (3 for each wood, 4 for each brick, ...). ===Civilization card details=== Each card acquired brings an immediate advantage (depicted on the top half of the card) and some multiplier for final scoring (depicted on the bottom half of the card). Place the mouse cursor on each card to see details in the tooltip. Note that at the list of your acuired civilization cards you will see only the bottom half of each card, for that top half is not relevant anymore. ===Feed your people=== Each agriculture level automatically give you 1 food. You must provide 1 food per person. You may use any resource to feed your people if there is not enough food. If you don't manage to feed your people by means above, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round Final number of points for each player is summed out of * points earned during the game by acquiring buildings, minus food penalties, * multipliers denoted at the bottom halfs of civilization cards collected (like number of different culture cards, number of people, tool level etc). 97b0aa912d4b9b69c2f7376b22be6e9e7072bcb4 98 97 2012-05-18T23:56:20Z Spacediver 718 /* Use the actions of your placed people */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, according to civilization cards acquired by you. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players place groups of their people in places, occupying each "ring" by one people (except for the forest place having no rings). Special rules for game with 2 players only: * no more than 1 player may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field Special rules for game with 3 players only: * no more than 2 players may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field ===Use the actions of your placed people=== Each player uses all his placed people in any order, and perform the corresponding actions: * '''hunting grounds, forest, clay pit, quarry, and river''': roll 1 dice per people placed and acquire corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * '''field''': increase agriculture level. * '''tool maker''': get one tool point (new tool is added, up to 3 in total, after that these tools are upgraded). * '''hut''': get one additional people. * '''building card''': buy the building with resources, scoring some points. * '''civilization card''': buy the card with a number of resources (of any kind) depending on its position (1 to 4 resources depicted above the card). Then the immediate effect of the card is applied. ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You may use tools to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If the building cost is not fixed (question mark in the corner of the card), you win points for each of the resources used to acquire this building, depending on their values (3 for each wood, 4 for each brick, ...). ===Civilization card details=== Each card acquired brings an immediate advantage (depicted on the top half of the card) and some multiplier for final scoring (depicted on the bottom half of the card). Place the mouse cursor on each card to see details in the tooltip. Note that at the list of your acuired civilization cards you will see only the bottom half of each card, for that top half is not relevant anymore. ===Feed your people=== Each agriculture level automatically give you 1 food. You must provide 1 food per person. You may use any resource to feed your people if there is not enough food. If you don't manage to feed your people by means above, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round Final number of points for each player is summed out of * points earned during the game by acquiring buildings, minus food penalties, * multipliers denoted at the bottom halfs of civilization cards collected (like number of different culture cards, number of people, tool level etc). 287ea7fa1fd741d4cd21c7b7acc067293f636bc6 99 98 2012-05-18T23:57:16Z Spacediver 718 /* Civilization card details */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, according to civilization cards acquired by you. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players place groups of their people in places, occupying each "ring" by one people (except for the forest place having no rings). Special rules for game with 2 players only: * no more than 1 player may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field Special rules for game with 3 players only: * no more than 2 players may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field ===Use the actions of your placed people=== Each player uses all his placed people in any order, and perform the corresponding actions: * '''hunting grounds, forest, clay pit, quarry, and river''': roll 1 dice per people placed and acquire corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * '''field''': increase agriculture level. * '''tool maker''': get one tool point (new tool is added, up to 3 in total, after that these tools are upgraded). * '''hut''': get one additional people. * '''building card''': buy the building with resources, scoring some points. * '''civilization card''': buy the card with a number of resources (of any kind) depending on its position (1 to 4 resources depicted above the card). Then the immediate effect of the card is applied. ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You may use tools to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If the building cost is not fixed (question mark in the corner of the card), you win points for each of the resources used to acquire this building, depending on their values (3 for each wood, 4 for each brick, ...). ===Civilization card details=== Each card acquired brings an immediate advantage (depicted on the top half of the card) and some multiplier for final scoring (depicted on the bottom half of the card). Place the mouse cursor on each card to see details in the tooltip. Note that at the list of your acquired civilization cards you will see only the bottom half of each card, for that top half is not relevant anymore. ===Feed your people=== Each agriculture level automatically give you 1 food. You must provide 1 food per person. You may use any resource to feed your people if there is not enough food. If you don't manage to feed your people by means above, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round Final number of points for each player is summed out of * points earned during the game by acquiring buildings, minus food penalties, * multipliers denoted at the bottom halfs of civilization cards collected (like number of different culture cards, number of people, tool level etc). 8055236dec4e47f0d97b4a11798e1d8683139159 Contact us 0 9 61 21 2012-01-28T04:56:06Z Azraeldeadlight 63 /* E-mail contact */ wikitext text/x-wiki '''Board Game Arena''' is located in France. == E-mail contact == contact(at)boardgamearena.com We receive *a lot* of e-mails. Please do not send us an e-mail if: * ... you want to report a bug, please do it in the corresponding forum. * ... you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile == Responsible == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 b19d027459acac0ecff2c30a0bf71a353da4d5e0 Help 0 4 62 13 2012-01-28T04:56:47Z Azraeldeadlight 63 /* Detailed help */ wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com Forums] are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailed help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] c6067b5fc3f21568031e1b54885fd097134d4f1d 77 62 2012-03-01T16:30:05Z Yserbius123 229 Added list of games wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com Forums] are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailed help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] == Games == * [[Gamehelphaggis|Haggis]] * [[Gamehelpraceforthegalaxy|Race for the Galaxy]] * [[Gamehelpstoneage|Stone Age]] * [[Gamehelpdominion|Dominion]] * [[Gamehelpyearofthedragon|In the Year of the Dragon]] * [[Gamehelpcantstop|Can't Stop]] * [[Gamehelpkahuna|Kahuna]] * [[Gamehelpcoloretto|Coloretto]] * [[Gamehelphawaii|Hawaii]] * [[Gamehelptroyes|Troyes]] * [[Gamehelpgosu|Gosu]] * [[Gamehelppuertorico|Puerto Rico]] * [[Gamehelpamyitis|Amyitis]] * [[Gamehelptobago|Tobago]] * [[Gamehelpdragonheart|Dragonheart]] * [[Gamehelpchinagold|China Gold]] * [[Gamehelpunclechesnutstablegype|Uncle Chesnut's Table Gype]] 7d07756ae02893aca53910e7f887b90075704c79 Faq 0 3 64 24 2012-02-02T00:26:04Z Sunrise 21 /* What is forbidden on Board Game Arena? */ wikitext text/x-wiki [[Category:Help]] == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious losing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. 30db44a0c18a4716b60b3f10ceeebfaab2fd2f29 74 64 2012-02-21T23:26:39Z Sunrise 21 /* Meeting players and starting games */ wikitext text/x-wiki [[Category:Help]] == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. ===What does the '% hits' statistic mean?=== % hits = number of victory points / number of games played Where number of victory points is the following: When you win a 2 players game: 1 point. When you win a 3 players game: 1.5 points. When you win a 4 players game: 2 points. etc. This way, "50%" means that you win 50% of 2 players game, or 33% of 3 players game, etc. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious losing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. abd36ffcfe6194a01564f66ee1d74aadb48ddd82 75 74 2012-02-21T23:27:11Z Sunrise 21 /* Meeting players and starting games */ wikitext text/x-wiki [[Category:Help]] == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the table, most of the time it's because there is not yet enough players around the table for playing this game. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. ===What does the '% hits' statistic mean?=== % hits = number of victory points / number of games played Where number of victory points is the following: * When you win a 2 players game: 1 point. * When you win a 3 players game: 1.5 points. * When you win a 4 players game: 2 points. * etc. This way, "50%" means that you win 50% of 2 players game, or 33% of 3 players game, etc. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious losing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. edeaf919c942259f6571aeb8fcdae43a6f0ce9e4 100 75 2012-05-19T00:05:58Z Spacediver 718 /* I joined a game. When does the game start? */ (removed confusion of 'around the table' with 'joined the table') wikitext text/x-wiki [[Category:Help]] == General questions == ===What is Board Game Arena?=== Board Game Arena (BGA) is an online board game platform. With BGA, you can play online and in real time against players from the whole world. A selection of various board games and card games is available. In order to play, the only thing you need is your browser! ===What do you mean by "real time play"?=== You can find many websites where you can play board games with a "turn based" approach: after each move, you have to wait for your opponents to connect to the website and play their own move. Most of the time, you have to wait a long time between each move, and games take a long time to finish (if they ever do). On Board Game Arena, your opponents are connected to the game platform all along the game, and they can see your moves and react to them immediately - as is the case in the real world. ===What do I need to play?=== Your browser ... and that's it! Board Game Arena does not require anything else on your computer. Thus, you can play from any computer, anywhere, anytime! In order to make this thing possible, we are using the very latest technologies available for the web. This is the reason you should play with the most up to date web browsers to enjoy an optimal BGA experience (read more about our [[browser policy]]). ===How much does it cost to play on BGA?=== Playing on BGA is free. You can also choose to help us by making a donation and becoming a [[Board Game Arena club]] member. ===What are the games available on BGA?=== Board Game Arena proposes a various selection of board and card games, but is specialized in modern ("European style") adult games. [http://en.boardgamearena.com/#!gamlist See available games]. ===What can I do if I have an issue with the website?=== Most of the issues one can encounter on this website should be solved with a simple web page refresh (or "F5"). If you experience persistent issues, you can browse the [http://forum.boardgamearena.com/viewforum.php?f=4 bug section in the forum], see if someone already reported the issue, and add a new bug report if that's not the case. Please take some time to describe the bug you are reporting in detail so that we can quickly reproduce and fix it. ===What is the legal status of this website?=== All the games currently available on this site have been licensed or otherwise authorized by copyright holders. Please be aware that games available on BGA can be removed at the copyright holders demand (for example: if they publish their own adaptation of the game). Board Game Arena would like to thank all game publishers and game designers who allow us to have their games here, thus making it possible for this website to exist. ===I'm a game publisher: why would I like to have my game on Board Game Arena?=== The main goal of Board Game Arena is to make it easy for people to discover and love new games. We think that there is only two kinds of players on Board Game Arena: those who already bought the games they are playing online, and those who dream to buy them soon! As the activity of this website contributes to increasing a game's popularity and thus generates game boxes sales in the "real world", we think it is beneficial to the boardgame community: people from all over the world can play online, we can have fun developing this game platform to the best of our ability, and game publishers get money from the box sales and build a special relationship with their players community. == Meeting players and starting games == ===I launched a new table but nobody is joining?=== Although Board Game Arena has been enjoying a growing popularity, it is still a young website. For the most popular games, you can find players at any time of the day. For other games, we advise you to come back at peak hour (around 22:00 CEST) if you can't find opponents at the moment. Tip: check the number of online/available players for a game before launching the table. ===I joined a game. When does the game start?=== Each table has an administrator, which is the table creator. It is the responsibility of the table administrator to start the game when he is satisfied with the number of players having joined the table. If you are the table administrator and can't launch the game, most of the time it's because there is not yet enough players joined the table. ===What is the meaning of the small color circle next to players names?=== * http://fr.boardgamearena.com/theme/img/status/online_.png : this player is active. He completed an action very recently. * http://fr.boardgamearena.com/theme/img/status/inactive_.png : this player is inactive. He is connected to the website but did not perform any action recently. * http://fr.boardgamearena.com/theme/img/status/offline_.png : this player is offline. ===What does the '% hits' statistic mean?=== % hits = number of victory points / number of games played Where number of victory points is the following: * When you win a 2 players game: 1 point. * When you win a 3 players game: 1.5 points. * When you win a 4 players game: 2 points. * etc. This way, "50%" means that you win 50% of 2 players game, or 33% of 3 players game, etc. == During the game == ===What is the meaning of the icons next to players names?=== * http://fr.boardgamearena.com/theme/img/layout/active_player.gif : this player must make a move now. * http://fr.boardgamearena.com/theme/img/layout/active_player_clockalert.gif : this player must make a move now, and he has spent his reflexion time. Can someone wake him up? ;) * http://fr.boardgamearena.com/theme/img/layout/active_player_nonack.gif : this player must make a move now, but is probably not aware of the fact. If the situation does not evolve, it might be that this player has some connection issue. * http://fr.boardgamearena.com/theme/img/common/zombie.png : this player is a "zombie" (he left the game or has been fired from the game). The game goes on without this player. When the "normal" avatar of a player is displayed, it means that this player is waiting for his turn to play. ===A player has to make a move but he/she doesn't. What can I do?=== * First, please remember that this player has the right to think as long as he needs to about is next move... well as long as he still has some time left on the game clock, that is. * Then you can ask this player to confirm that he is still thinking about how to play. * If this player seems to be away, we advise you to wait a few minutes: this player may be experiencing some network problems or have left his computer temporarily. * If the player is not coming back, you can expel him from the game as soon as he is running out of time on the game clock for the current move (red bar) or if he goes over his alloted time to think by more than 3/4/5 minutes (depending on game speed). See Clock section for details. Important: in this case, no ELO points will be won by anybody for this game. ===What is the current progression of the game I'm playing?=== A percentage of progression is displayed on the top of the web page. There is also a progress bar at the bottom of the web page shows you the current progression of the game. ===What is forbidden on Board Game Arena?=== * Leaving a game in progress on purpose. * Thinking an unnecessary and unreasonable amount of time at the end of game in an obvious losing situation. * Kingmaking: enabling another player to win on purpose while there is a better move to make for yourself. * Running out of time on the game clock. * Giving some piece of information about the current game situation that corrupts the normal game flow. * Communicating with another player about the game privately (ex: with MSN). * Provocation / triumphalism / defeatism ... anything which is not fair play. * Having a shocking avatar (no advertisement, no politics, ...) Going against these rules will affect your reputation. ===What is absolutely forbidden in Board Game Arena?=== * Creating multiple account and playing against oneself. * Insulting other players in any manner. Going against these rules can lead to the removal of your account and/or to the blacklisting of your IP. ===What if some player does something wrong?=== Board Game Arena platform has been designed to encourage players to maintain a good behaviour. The reputation system allows you to distinguish between good and bad players. Then, it is up to you to decide whether to start a game with them or not. If you think some player has had a bad behavior during a game, you can give him a at the end of the game. If you think some player committed some serious wrongdoing during a game (ex: insult), please report this player to us ("report this player" link from his profile or game result page) so that we can take appropriate measures. a22edcd73f518e3d5b1421a84dfce0e7bd9832b4 Gamehelpdominion 0 29 65 2012-02-02T00:54:39Z Sunrise 21 Created page with "'''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being deplete..." wikitext text/x-wiki '''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being depleted. '''Setup''' Each player starts the game with a deck of 10 cards (3 ''Estates'', and 7 ''Copper''). The deck is shuffled and 5 cards are drawn to form the player's hand. '''Overview''' The A-B-C rule makes it easy to remember the play order. On a player's turn: A: Action The player may play an action card. Each player is allowed 1 action per turn by default. Certain action cards provide additional actions. B: Buy After the action phase is over, the player may play buy a card from the general supply. Bought cards are placed in the player's discard pile. Each player is allowed 1 buy per turn by default. Certain action cards provide additional buys. C: Cleanup After the buy phase is over, the player places all cards (played cards and in hand cards) into the discard pile. Five new cards are drawn from the player's deck. If there aren't enough cards to form a full hand, the discard pile is reshuffled and forms the new deck. The game progresses in clockwise order until ending conditions are met. '''Tie-breaker''' If 2 or more players have the same number of victory points, the player that had the fewest number of turns wins. If these is still a tie, all tied players rejoice in a shared victory. 805fe71c99ac402dc86dcc9baf048905fac8d1a2 71 65 2012-02-18T20:50:29Z Camaroman 213 wikitext text/x-wiki '''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being depleted. '''Setup''' Each player starts the game with a deck of 10 cards (3 ''Estates'', and 7 ''Copper''). The deck is shuffled and 5 cards are drawn to form the player's hand. '''Overview''' The A-B-C rule makes it easy to remember the play order. On a player's turn: A: Action The player may play an action card. Each player is allowed 1 action per turn by default. Certain action cards provide additional actions. B: Buy After the action phase is over, the player may play buy a card from the general supply. Bought cards are placed in the player's discard pile. Each player is allowed 1 buy per turn by default. Certain action cards provide additional buys. C: Cleanup After the buy phase is over, the player places all cards (played cards and in hand cards) into the discard pile. Five new cards are drawn from the player's deck. If there aren't enough cards to form a full hand, the discard pile is reshuffled and forms the new deck. The game progresses in clockwise order until ending conditions are met. '''Tie-breaker''' If 2 or more players have the same number of victory points, the player that had the fewest number of turns wins. If there is still a tie, all tied players rejoice in a shared victory. bc9f64e7b84f58a37339e487710ed67e3593ba84 76 71 2012-02-26T01:36:51Z Dclaw25 248 wikitext text/x-wiki '''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being depleted. '''Setup''' Each player starts the game with a deck of 10 cards (3 ''Estates'', and 7 ''Copper''). The deck is shuffled and 5 cards are drawn to form the player's hand. '''Overview''' The A-B-C rule makes it easy to remember the play order. On a player's turn: A: Action: The player may play an action card. Each player is allowed 1 action per turn by default. Certain action cards provide additional actions. B: Buy: After the action phase is over, the player may play buy a card from the general supply. Bought cards are placed in the player's discard pile. Each player is allowed 1 buy per turn by default. Certain action cards provide additional buys. C: Cleanup: After the buy phase is over, the player places all cards (played cards and in hand cards) into the discard pile. Five new cards are drawn from the player's deck. If there aren't enough cards to form a full hand, the discard pile is reshuffled and forms the new deck. The game progresses in clockwise order until ending conditions are met. '''Tie-breaker''' If 2 or more players have the same number of victory points, the player that had the fewest number of turns wins. If there is still a tie, all tied players rejoice in a shared victory. 98e728c742c8883c076384792bd60f9fb34bc840 Browser support 0 13 69 36 2012-02-07T08:43:53Z Laszlosaurus 116 emphasized recommended browsers and provided download links wikitext text/x-wiki [[Category:Help]] <h3>For the best experience, we recommend:</h3> * '''Google Chrome 10+''' [http://www.google.com/chrome Windows] [http://www.google.com/chrome?platform=mac Mac] [http://www.google.com/chrome?platform=linux Linux] * '''Mozilla Firefox 4+''' [http://www.mozilla.org/products/firefox/ Windows] [http://www.mozilla.org/products/firefox/ Mac] [http://www.mozilla.org/products/firefox/ Linux] Board Game Arena takes advantage of the most recent web technology to make it possible for you to play without installing anything on your computer: no software to download or update, no plugins to install, etc. Consequently, to play you need to use a modern web browser. Generally speaking, the more recent your web browser is, the more pleasant your game experience on Board Game Arena will be. This website makes intensive use of Javascript and your browser's graphics capabilities. Thus, if you want to have the best gaming experience with Board Game Arena, you should use one of the browsers listed above. However, we officially support the following browsers: * Google Chrome 4+ * Mozilla Firefox 3.5+ * Internet Explorer 9 * Internet Explorer 8 (partial support for IE7) * Safari 4+ (Note: We do NOT support play on iPads or similar tablets.) 3872e0f01d029cea980494755aa10bf990d93e78 Grade 0 30 70 2012-02-09T01:48:50Z Cthulpiss 110 Created page with "Board Game Arena is a friendly and respectful community of players. The moderation and grades system help us to ensure that the minority of players who disrespect the spirit o..." wikitext text/x-wiki Board Game Arena is a friendly and respectful community of players. The moderation and grades system help us to ensure that the minority of players who disrespect the spirit of this website can't bother other players. When you register on Board Game Arena, you're a mortal. You can access most of the functionalities of this website, except some of them (ex: speaking on global chat). After a while, you are promoted to the angel grade. With this grade you are able to access all functionalities of the service. But, if you go against the Board Game Arena terms, you can be moderated and demoted to devilkin or demon. If you manage to become a well appreciated player, you can become a moderator with a superior grade: seraph or cherub. == All grades == * '''Mortal''': this is your grade when you registered on Board Game Arena. You can access almost all functionalities of the website (but you can't speak on general channel). * '''Angel''': this is the grade of regular players. To be promoted to this grade, you need: 3 days seniority, 3 games played and 3 positive reputation points. * '''Seraph''': this is the moderator grade. Seraph can punish players who disrespect BGA terms of use: reputation penalties, inferior grade. * '''Cherub''': this is the super moderator grade. Cherub check that Seraph are fair and unbiased. * '''Archangel''': this is the Board Game Arena administrators' grade. * '''Demon''': due to a major terms of use violation, this player is not allowed to do anything on the website during a period of time (or forever ...) * '''Devilkin''': due to a terms of use violation, this player is not allowed to speak on Board Game Arena (or publish anything) during a period of time. 71f29ae0ffe6a00b8e4a457aacd391fde8cee61d Rating 0 16 72 38 2012-02-20T05:32:55Z Amagila 220 wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How is my ELO ranking computed ? == The BGA ELO system is inspired by the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. Let's try to make it simple: the points you win/lose after each game depends on the ranking of your opponents. If you win at a table with opponents stronger than you, your ranking will increase a lot. If you lose at the same table, your ranking will decrease a little. And so on ... In case there are more than 2 players at the table, we take into account the final rank. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO c3ec166f7f82b32d6e93d7108888b93f71461a40 Reputation 0 17 73 40 2012-02-20T05:34:23Z Amagila 220 wikitext text/x-wiki [[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To achieve this goal, each player has a '''reputation profile''' which is the representation of his general attitude with others players. This profile is composed of 3 items: * Opinions from other players (http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png) * % of games you finished * % of games you finished with no clock penalties Seeing the reputation profile of a player, you are able to check if his behavior is good, if he won't quit the game before the end, and if he respect time limits. == How to increase my reputation / what makes my reputation decrease ? == At any time, you can give others players http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png marks. * a http://fr.boardgamearena.com/theme/img/common/reputation_up.png if you liked to play with him/her, and recommend to play with this player. * a http://fr.boardgamearena.com/theme/img/common/reputation_down.png if you disliked to play with him/her, and discourage others to play with this player. You can only give a single thumb (green or red) to a single player. If your opinion evolved you can click again on a thumb to reflect this change. As soon as you give a "red thumb" to a player, a warning message is displayed when you try to join a table where this player is. In this situation it is recommended to leave the game or to expel this player. By nature, opinions are subjectives. There is nothing we can do for you if you receive a for an unfair reason. However, we know by experience that this system has a lot of advantages and give a relevant information. == Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png == * Be polite ! Say at least "hello" and "good luck" at the beginning of the game. "good game" ("gg") at the end of the game. * When you need some time to think, click on "I would like to think a little" link. * Stay calm in any circumstances: it's a game. * Don't press your opponent to play if he has some time left. * If you really can't finish the game (this is not supposed to happened...), then say you are sorry and leave the game by your own to save your opponents time. * Be a good loser: if your lose because of bad luck or a strategy you dislike, don't blame the luck or your opponent (and don't give him a http://fr.boardgamearena.com/theme/img/common/reputation_down.png for this reason!). * Be a good winner: if your opponent makes a mistake you can signal it to him, but avoid triumphalism and provocation. == What are the consequences of a bad reputation ? == A bad reputation makes you suspect to your potential opponents. You will have to explain your situation, and maybe some players won't take the risk to play with you. It is also possible to filter players by reputation on a table. The worse your reputation is, the bigger difficulties you will have to find opponents. 82e240a99d58813f6fa5c065f5d6a831f89af9d4 Gamehelpdragonheart 0 31 78 2012-03-02T15:38:38Z Yserbius123 229 New page wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 2 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it it. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards were played ends the game. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus two extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. daaa8873bc1834aa5742568b1a229c985f2a521d 95 78 2012-04-23T19:30:36Z Sourisdudesert 1 wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 2 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it it. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards were played ends the game. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus three extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. a6a9718046f5d9072f2785309784178d640abc81 96 95 2012-04-30T20:53:02Z Christopheryoder 621 /* Cards */ wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 2 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it is. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards were played ends the game. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus three extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. a9e72a95fb991b06d79eaf44b61835a529800b60 Gamehelppuertorico 0 23 80 49 2012-03-11T14:46:48Z Een 3 wikitext text/x-wiki == Goal == Be the player with the most victory points at the end of the game by collecting: * victory points earned for buildings * victory point tokens earned at the captain phase * conditional victory points earned at the end of the game for occupied large buildings In case of a tie, the player owning the most doubloons and goods is the winner. == Rules summary == The game is played over several rounds. At the start of a round, the governor selects a role, then each player in turn selects a role. At the end of the round, the governor token moves to the next player. When a role has been chosen, each player in turn plays the action for this role. Only the player who selected the role can use the role privilege. Available roles are the following: * Mayor: colonists set foot in the new world ! Privilege : the mayor can get one more colonist from the supply. Action : in turn, begining with the mayor, players get one colonist from the ship, until it is empty. Then players have to set colonists on their buildings and plantations. * Craftsman: goods are produced. Privilege : the craftsman can produce one more good of his choice. Action : produce goods for your occupied buildings and plantations. * Trader: goods are sold to the trading house. Privilege : the trader earns 1 extra doubloon if he sells. Action : sell one good the trading house doesn't have yet. * Settler : plantations settlement. Privilege : the settler can get a quarry instead of a plantation. Action : get a plantation chosen among those available. * Builder : buildings are bought and built. Privilege : the builder can get a building for 1 doubloon less than the regular price. Action : get a building chosen among those available. * Captain : victory points are won by shipping goods to the old world. Privilege : the captain earns one extra victory points if he ships some goods. Action : select a type of good to load on a cargo ship; 1 victory point is earned for each barrel of this type of good loaded on the ship. * Prospector : gold rush brings money ! Privilege : the prospector gets one doubloon from the bank. Action : none. Please also note that occupied violet buildings have modifier effects for role actions. End of game happens at the end of the round for which one of the following events comes to pass : * there is not enough colonists in the supply to refill the colonist ship at the end of the mayor phase * the last victory point token has been earned during the captain phase * at least one of the players built on his 12th and last free space in the city. == Playing online == Choosing a role : click on the role of your choice in the list on the right of your game board. * Mayor role : accept or refuse to get an extra colonist from the supply. Colonists are then automatically recruited by players. Click on a building or a plantation to setup a colonist on it. Click on a colonist to send it back to San Juan (the counter for colonists in San Juan is situated in your player panel on the right of the page). * Craftsman role : goods production is automated (counters for goods owned are in the player panel on the right of the page). Then, choose one extra good that you can produce as your privilege. * Trader role : choose a good that you want to sell by clicking on the appropriate counter in your player panel. * Settler role : click on the plantation (or quarry) that you want. Placement on your board is automated. * Builder role : click on the building that you want to buy. Placement on your board is automated. * Captain role : click on the cargo boat on which you want to ship some goods. Then choose the type of good that you want to ship by clicking on the appropriate counter in your player panel. At the end of the captain phase, if you have some goods to store (warehouse or windrose), click on the corresponding counter. Stored goods will be highlighted by a red frame. * Prospector role : doubloon is earned immediately. Tooltips are available to give information on roles and buildings by hovering over game elements with the mouse. == 'Balanced game' variant == This variant implements two game balance fixes giving each player an equal chance of winning as listed in the [http://en.wikipedia.org/wiki/Puerto_Rico_%28board_game%29 Puerto Rico (board game) Wikipedia page]. * The prices of the Factory and University buildings are swapped so that the Factory costs 8 doubloons and the University costs 7 doubloons * Any player that starts with a corn plantation starts with 1 doubloon less than the players that start with an indigo plantation. '''Have a good game !''' 0b804619fb7d51434ad55e5ff5672a4cd2fdbba9 Gamehelpsaboteur 0 32 82 2012-03-11T18:05:12Z Een 3 Created page with " == Goal == Get as many gold nuggets as possible during the three rounds of the game. In order to do so, # if you are a '''gold digger''', you must, in association with othe..." wikitext text/x-wiki == Goal == Get as many gold nuggets as possible during the three rounds of the game. In order to do so, # if you are a '''gold digger''', you must, in association with other gold diggers, build a path from the 'Start' card to the treasure card which can be found among the three 'End' cards # if you are a '''saboteur''', you must, in association with other gold diggers, prevent the gold diggers to get to the treasure. Your role (gold digger or saboteur) will be randomly selected at the start of each round. == Rules summary == On your turn, you must click on a card from your hand to select it, then play this card or discard it. You can also rotate a 'Path' card before playing it by clicking the 'rotate' arrow that appears above the card. The cards are of several types: * 'Path' card: you can play this card to extend the maze, provided it is compatible with the cards already in place. To do this, click the location where you want to put the card. * 'Sabotage' card: you can break another player's tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score). * 'Repair' card: you can repair your, or another player's, broken tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score), or click on the 'Sabotage' card in front of you. * 'Map' card: you can play this card on any 'End' card to discover whether or not the treasure lies there (you alone will get the information, other players will see nothing). Just click on the 'End' card that you want to know everything about. * 'Rock fall' card: this card lets you remove any 'Path' card of the maze. Just click on the card you want to remove. == Cards in play == * 44 'Path' cards * 9 'Sabotage' cards (three for each tool) * 6 'Repair a tool' cards (two for each tool) * 3 'Repair a tool among these two' cards (one for each combination of two tools) * 5 'Map' cards (one less than in the box set, as requested by the game author) * 3 'Rock fall' cards * 28 'Gold' cards ** 16 with one gold nugget ** 8 with two gold nuggets ** 4 with three gold nuggets == Roles == Roles are randomly selected among a set that depends upon the number of players: * with 3 players: 1 saboteur and 3 gold diggers * with 4 players: 1 saboteur and 4 gold diggers * with 5 players: 2 saboteurs and 4 gold diggers * with 6 players: 2 saboteurs and 5 gold diggers * with 7 players: 3 saboteurs and 5 gold diggers * with 8 players: 3 saboteurs and 6 gold diggers * with 9 players: 3 saboteurs and 7 gold diggers * with 10 players: 4 saboteurs and 7 gold diggers == Available variants == The game author, '''Frederic Moyersoen''', told us about some game variants, and we implemented all four of them. Please tell us which one is your favourite in the forum! '''Have a good game !''' a4923cb01ed4c3387797dd7d0f2a746908e8ed39 83 82 2012-03-11T18:31:04Z Een 3 /* Available variants */ wikitext text/x-wiki == Goal == Get as many gold nuggets as possible during the three rounds of the game. In order to do so, # if you are a '''gold digger''', you must, in association with other gold diggers, build a path from the 'Start' card to the treasure card which can be found among the three 'End' cards # if you are a '''saboteur''', you must, in association with other gold diggers, prevent the gold diggers to get to the treasure. Your role (gold digger or saboteur) will be randomly selected at the start of each round. == Rules summary == On your turn, you must click on a card from your hand to select it, then play this card or discard it. You can also rotate a 'Path' card before playing it by clicking the 'rotate' arrow that appears above the card. The cards are of several types: * 'Path' card: you can play this card to extend the maze, provided it is compatible with the cards already in place. To do this, click the location where you want to put the card. * 'Sabotage' card: you can break another player's tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score). * 'Repair' card: you can repair your, or another player's, broken tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score), or click on the 'Sabotage' card in front of you. * 'Map' card: you can play this card on any 'End' card to discover whether or not the treasure lies there (you alone will get the information, other players will see nothing). Just click on the 'End' card that you want to know everything about. * 'Rock fall' card: this card lets you remove any 'Path' card of the maze. Just click on the card you want to remove. == Cards in play == * 44 'Path' cards * 9 'Sabotage' cards (three for each tool) * 6 'Repair a tool' cards (two for each tool) * 3 'Repair a tool among these two' cards (one for each combination of two tools) * 5 'Map' cards (one less than in the box set, as requested by the game author) * 3 'Rock fall' cards * 28 'Gold' cards ** 16 with one gold nugget ** 8 with two gold nuggets ** 4 with three gold nuggets == Roles == Roles are randomly selected among a set that depends upon the number of players: * with 3 players: 1 saboteur and 3 gold diggers * with 4 players: 1 saboteur and 4 gold diggers * with 5 players: 2 saboteurs and 4 gold diggers * with 6 players: 2 saboteurs and 5 gold diggers * with 7 players: 3 saboteurs and 5 gold diggers * with 8 players: 3 saboteurs and 6 gold diggers * with 9 players: 3 saboteurs and 7 gold diggers * with 10 players: 4 saboteurs and 7 gold diggers == Available variants == The game author, '''Frederic Moyersoen''', told us about some game variants, and we implemented all four of them. Please tell us which one is your favourite in the forum! Two variants are about gold sharing: * '''Old Mine''': the old mine was not as packed with gold... sometimes all you got for your digging was worthless stones. In this variant, some 'Gold' cards do not yield any gold nuggets (among the 28 'Gold' cards, 4 are worth three nuggets, 8 are worth two nuggets, 10 are worth one nugget and 6 are worthless). So it is definitely best to get first to the treasure in order to be sure not to leave empty-handed! * '''New mine''': the new mine is more even to each gold digger. Instead of distributing as many 'Gold' cards as the number of players - which benefits most to the gold digger that gets first to the treasure as he often gets two 'Gold' cards - it distributes as many 'Gold' cards as the number of gold diggers in play. Therefore, each gold digger will get only one 'Gold' card (however, it is still best to be first go get to the treasure in order to get a card of higher value!) Two variants are about gameplay: * '''Competitive''': the gold diggers who have a 'Sabotage' card (broken pickaxe, lamp or trolley) laid in front of them at the end of a round, do not receive a 'Gold' card when their team wins the round. The 'Gold' cards are distributed between the gold diggers who have no broken tool (saboteurs are not affected by this rule). Therefore, with this variant it can be interesting to sabotage some of your fellow gold diggers... but not too often, so as not to make your team lose! * '''Selfish dwarf''': one of the gold diggers will get a red jacket. This gold digger is a selfish dwarf: he can only win if he manages to complete the connection to the treasure himself. In this case, he gets four gold nuggets while the other players get nothing at all. If another gold digger completes the connection, the selfish dwarf takes no part in the treasure sharing (which is done with as many 'Gold' cards as the number of players, selfish dwarf excluded) '''Have a good game !''' 89f9a450f60ec687725cea1fef28dabb34a1dc9b 84 83 2012-03-25T17:25:23Z Coyotek4 143 /* Goal */ wikitext text/x-wiki == Goal == Get as many gold nuggets as possible during the three rounds of the game. In order to do so, # if you are a '''gold digger''', you must, in association with other gold diggers, build a path from the 'Start' card to the treasure card which can be found among the three 'End' cards # if you are a '''saboteur''', you must, in association with other saboteurs, prevent the gold diggers to get to the treasure. Your role (gold digger or saboteur) will be randomly selected at the start of each round. == Rules summary == On your turn, you must click on a card from your hand to select it, then play this card or discard it. You can also rotate a 'Path' card before playing it by clicking the 'rotate' arrow that appears above the card. The cards are of several types: * 'Path' card: you can play this card to extend the maze, provided it is compatible with the cards already in place. To do this, click the location where you want to put the card. * 'Sabotage' card: you can break another player's tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score). * 'Repair' card: you can repair your, or another player's, broken tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score), or click on the 'Sabotage' card in front of you. * 'Map' card: you can play this card on any 'End' card to discover whether or not the treasure lies there (you alone will get the information, other players will see nothing). Just click on the 'End' card that you want to know everything about. * 'Rock fall' card: this card lets you remove any 'Path' card of the maze. Just click on the card you want to remove. == Cards in play == * 44 'Path' cards * 9 'Sabotage' cards (three for each tool) * 6 'Repair a tool' cards (two for each tool) * 3 'Repair a tool among these two' cards (one for each combination of two tools) * 5 'Map' cards (one less than in the box set, as requested by the game author) * 3 'Rock fall' cards * 28 'Gold' cards ** 16 with one gold nugget ** 8 with two gold nuggets ** 4 with three gold nuggets == Roles == Roles are randomly selected among a set that depends upon the number of players: * with 3 players: 1 saboteur and 3 gold diggers * with 4 players: 1 saboteur and 4 gold diggers * with 5 players: 2 saboteurs and 4 gold diggers * with 6 players: 2 saboteurs and 5 gold diggers * with 7 players: 3 saboteurs and 5 gold diggers * with 8 players: 3 saboteurs and 6 gold diggers * with 9 players: 3 saboteurs and 7 gold diggers * with 10 players: 4 saboteurs and 7 gold diggers == Available variants == The game author, '''Frederic Moyersoen''', told us about some game variants, and we implemented all four of them. Please tell us which one is your favourite in the forum! Two variants are about gold sharing: * '''Old Mine''': the old mine was not as packed with gold... sometimes all you got for your digging was worthless stones. In this variant, some 'Gold' cards do not yield any gold nuggets (among the 28 'Gold' cards, 4 are worth three nuggets, 8 are worth two nuggets, 10 are worth one nugget and 6 are worthless). So it is definitely best to get first to the treasure in order to be sure not to leave empty-handed! * '''New mine''': the new mine is more even to each gold digger. Instead of distributing as many 'Gold' cards as the number of players - which benefits most to the gold digger that gets first to the treasure as he often gets two 'Gold' cards - it distributes as many 'Gold' cards as the number of gold diggers in play. Therefore, each gold digger will get only one 'Gold' card (however, it is still best to be first go get to the treasure in order to get a card of higher value!) Two variants are about gameplay: * '''Competitive''': the gold diggers who have a 'Sabotage' card (broken pickaxe, lamp or trolley) laid in front of them at the end of a round, do not receive a 'Gold' card when their team wins the round. The 'Gold' cards are distributed between the gold diggers who have no broken tool (saboteurs are not affected by this rule). Therefore, with this variant it can be interesting to sabotage some of your fellow gold diggers... but not too often, so as not to make your team lose! * '''Selfish dwarf''': one of the gold diggers will get a red jacket. This gold digger is a selfish dwarf: he can only win if he manages to complete the connection to the treasure himself. In this case, he gets four gold nuggets while the other players get nothing at all. If another gold digger completes the connection, the selfish dwarf takes no part in the treasure sharing (which is done with as many 'Gold' cards as the number of players, selfish dwarf excluded) '''Have a good game !''' aa60b7d77920dffe16a09bc974a9b8de56a45063 85 84 2012-03-25T17:26:37Z Coyotek4 143 /* Goal */ wikitext text/x-wiki == Goal == Get as many gold nuggets as possible during the three rounds of the game. In order to do so, # if you are a '''gold digger''', you must, in association with other gold diggers, build a path from the 'Start' card to the treasure card which can be found among the three 'End' cards # if you are a '''saboteur''', you must, in association with other saboteurs, prevent the gold diggers from getting to the treasure. Your role (gold digger or saboteur) will be randomly selected at the start of each round. == Rules summary == On your turn, you must click on a card from your hand to select it, then play this card or discard it. You can also rotate a 'Path' card before playing it by clicking the 'rotate' arrow that appears above the card. The cards are of several types: * 'Path' card: you can play this card to extend the maze, provided it is compatible with the cards already in place. To do this, click the location where you want to put the card. * 'Sabotage' card: you can break another player's tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score). * 'Repair' card: you can repair your, or another player's, broken tool of the type indicated. To do this, click the corresponding tool in the target player's panel (under the score), or click on the 'Sabotage' card in front of you. * 'Map' card: you can play this card on any 'End' card to discover whether or not the treasure lies there (you alone will get the information, other players will see nothing). Just click on the 'End' card that you want to know everything about. * 'Rock fall' card: this card lets you remove any 'Path' card of the maze. Just click on the card you want to remove. == Cards in play == * 44 'Path' cards * 9 'Sabotage' cards (three for each tool) * 6 'Repair a tool' cards (two for each tool) * 3 'Repair a tool among these two' cards (one for each combination of two tools) * 5 'Map' cards (one less than in the box set, as requested by the game author) * 3 'Rock fall' cards * 28 'Gold' cards ** 16 with one gold nugget ** 8 with two gold nuggets ** 4 with three gold nuggets == Roles == Roles are randomly selected among a set that depends upon the number of players: * with 3 players: 1 saboteur and 3 gold diggers * with 4 players: 1 saboteur and 4 gold diggers * with 5 players: 2 saboteurs and 4 gold diggers * with 6 players: 2 saboteurs and 5 gold diggers * with 7 players: 3 saboteurs and 5 gold diggers * with 8 players: 3 saboteurs and 6 gold diggers * with 9 players: 3 saboteurs and 7 gold diggers * with 10 players: 4 saboteurs and 7 gold diggers == Available variants == The game author, '''Frederic Moyersoen''', told us about some game variants, and we implemented all four of them. Please tell us which one is your favourite in the forum! Two variants are about gold sharing: * '''Old Mine''': the old mine was not as packed with gold... sometimes all you got for your digging was worthless stones. In this variant, some 'Gold' cards do not yield any gold nuggets (among the 28 'Gold' cards, 4 are worth three nuggets, 8 are worth two nuggets, 10 are worth one nugget and 6 are worthless). So it is definitely best to get first to the treasure in order to be sure not to leave empty-handed! * '''New mine''': the new mine is more even to each gold digger. Instead of distributing as many 'Gold' cards as the number of players - which benefits most to the gold digger that gets first to the treasure as he often gets two 'Gold' cards - it distributes as many 'Gold' cards as the number of gold diggers in play. Therefore, each gold digger will get only one 'Gold' card (however, it is still best to be first go get to the treasure in order to get a card of higher value!) Two variants are about gameplay: * '''Competitive''': the gold diggers who have a 'Sabotage' card (broken pickaxe, lamp or trolley) laid in front of them at the end of a round, do not receive a 'Gold' card when their team wins the round. The 'Gold' cards are distributed between the gold diggers who have no broken tool (saboteurs are not affected by this rule). Therefore, with this variant it can be interesting to sabotage some of your fellow gold diggers... but not too often, so as not to make your team lose! * '''Selfish dwarf''': one of the gold diggers will get a red jacket. This gold digger is a selfish dwarf: he can only win if he manages to complete the connection to the treasure himself. In this case, he gets four gold nuggets while the other players get nothing at all. If another gold digger completes the connection, the selfish dwarf takes no part in the treasure sharing (which is done with as many 'Gold' cards as the number of players, selfish dwarf excluded) '''Have a good game !''' ce5786063d5cbea6ae574ca2e25238661377ad54 Gamehelpcoloretto 0 33 86 2012-03-29T15:09:59Z Greywolf 379 Jokers Rule wikitext text/x-wiki In the regular game, one gets to determine where to place the jokers but apparently for this online version, the jokers are auto-allocated to your highest stacks. bb7190f77b09c6cf389d7b52c1a18a36bea5403a Referral 0 11 88 29 2012-04-03T07:31:54Z Toeeatingdog 468 /* How does this work? */ wikitext text/x-wiki [[Category:Help]] When new players discover Board Game Arena thanks to you, you become a member of [[Club Board Game Arena]] == How does this work? == Each time a new player creates an account on Board Game Arena from your referral web address(see below), he becomes one of your '''referees'''. As soon as this referee playes 3 games, you become a member of BGA club. == How to get referees? == To recruit referees, use your personal referrer web address: {sponsorshipurl} New players MUST create an account from this web address to become one of your referees. == How to get many referees? == * [http://boardgamearena.com/#!doc/sponsor?facebook Tell my friends on Facebook] * [http://boardgamearena.com/#!doc/sponsor?twitter Tell my followers on Twitter] * [http://boardgamearena.com/#!doc/sponsor?email Tell my friends by email] * Publish my personal web address in some forum, send it by MSN, ... == How many BGA club membership days can I win? == As soon as your first referee finish his '''third''' game on Board Game Arena, you win a '''1 month''' BGA club membership. ''Note: your account upgrade will be effective within 24 hours.'' As soon as you get '''2 referees''' with at least '''4 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. As soon as you get '''3 referees''' with at least '''5 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. ... and so on: as your referees number grows you can win many free memberships ! == Referees and multiple account == It is of course forbidden to create fake referee accounts to win free memberships. 9099f9116dd4534c68393a2381c254cc0c2afa8a 89 88 2012-04-03T07:32:27Z Toeeatingdog 468 /* How does this work? */ wikitext text/x-wiki [[Category:Help]] When new players discover Board Game Arena thanks to you, you become a member of [[Club Board Game Arena]] == How does this work? == Each time a new player creates an account on Board Game Arena from your referrer web address (see below), he becomes one of your '''referees'''. As soon as this referee playes 3 games, you become a member of BGA club. == How to get referees? == To recruit referees, use your personal referrer web address: {sponsorshipurl} New players MUST create an account from this web address to become one of your referees. == How to get many referees? == * [http://boardgamearena.com/#!doc/sponsor?facebook Tell my friends on Facebook] * [http://boardgamearena.com/#!doc/sponsor?twitter Tell my followers on Twitter] * [http://boardgamearena.com/#!doc/sponsor?email Tell my friends by email] * Publish my personal web address in some forum, send it by MSN, ... == How many BGA club membership days can I win? == As soon as your first referee finish his '''third''' game on Board Game Arena, you win a '''1 month''' BGA club membership. ''Note: your account upgrade will be effective within 24 hours.'' As soon as you get '''2 referees''' with at least '''4 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. As soon as you get '''3 referees''' with at least '''5 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. ... and so on: as your referees number grows you can win many free memberships ! == Referees and multiple account == It is of course forbidden to create fake referee accounts to win free memberships. 63171eacf8f3dcb07c87ea7f365a438d800754c9 90 89 2012-04-03T07:33:42Z Toeeatingdog 468 /* Referees and multiple account */ wikitext text/x-wiki [[Category:Help]] When new players discover Board Game Arena thanks to you, you become a member of [[Club Board Game Arena]] == How does this work? == Each time a new player creates an account on Board Game Arena from your referrer web address (see below), he becomes one of your '''referees'''. As soon as this referee playes 3 games, you become a member of BGA club. == How to get referees? == To recruit referees, use your personal referrer web address: {sponsorshipurl} New players MUST create an account from this web address to become one of your referees. == How to get many referees? == * [http://boardgamearena.com/#!doc/sponsor?facebook Tell my friends on Facebook] * [http://boardgamearena.com/#!doc/sponsor?twitter Tell my followers on Twitter] * [http://boardgamearena.com/#!doc/sponsor?email Tell my friends by email] * Publish my personal web address in some forum, send it by MSN, ... == How many BGA club membership days can I win? == As soon as your first referee finish his '''third''' game on Board Game Arena, you win a '''1 month''' BGA club membership. ''Note: your account upgrade will be effective within 24 hours.'' As soon as you get '''2 referees''' with at least '''4 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. As soon as you get '''3 referees''' with at least '''5 games''' logged on Board Game Arena, you win another '''1 month''' BGA club membership. ... and so on: as your referees number grows you can win many free memberships ! == Referees and multiple accounts == It is of course forbidden to create fake referee accounts to win free memberships. aae72040c79a6b18ef8bd1486cd56f5f97eb30d7 Gamehelphawaii 0 34 91 2012-04-04T08:57:29Z Tobylongbeach 477 Created page with "Overview: You are the chieftain of a kingdom (your placemat) with up to five villages (rows). You buy or go to the islands to get place tiles that you put in your villages. Th..." wikitext text/x-wiki Overview: You are the chieftain of a kingdom (your placemat) with up to five villages (rows). You buy or go to the islands to get place tiles that you put in your villages. There are five rounds and you get a decreasing amount of resources each round with which to acquire place tiles. Its a many-paths-to-victory kind of game. There are three kinds of resources: 1) Feet - let you move around the board, or travel to the islands or go to the cove to catch fish. 2) Clam shells - let you buy place tiles from the board 3) Fruit - can be used in place of feet or clam shells in all-or-nothing fashion. If you substitute for feet, you must substitute the entire moving cost. If you substitute for clams, you must substitute the entire purchase price. Moving: Your chieftain start at the beach and it costs nothing to return there from the board. Each movement in from the beach costs one foot. Moving up, down, right, left or diagonal on the board costs one foot per space. Staying on a space costs one foot. To go to the islands, you use your boats and feet. The closest island costs three feet and the farthest costs six. You have to have the feet as well as the space on the boats for the feet. You get an immediate victory point bonus for going to the islands but you do not get a price token (more about that later). Also, you get the level 2 version of whatever place tile or item you are getting on the islands. For instance, to go to the six foot island, you would need either: A) two three-feet boats and six feet resources or B) you would need the four-foot boat (which comes with a prepaid foot) and the two-foot boat as well as five feet resources. That is the advantage of the pre-paid foot on the four-foot boat. == Purchasing: == To buy some thing from the board: Select the price token (round colored circle with number inside) on the space with the place tile or item you want. If there is more than one place tile available on that space, you will be given a choice of which one you want. The movement cost will be in feet and the purchase price will be in clam shells but you can substitute either or both with fruit if you have it. You gain the price token for the round. There must be an available price token in order to purchase something from that space. You can pay double to get the level 2 version, which for most tiles is double effect. You place it in the village (row) of your choice. You must be able to place it in order to purchase it. A) You can only have one of each type of place tile in each village. For instance, you cannot have a foot (1) hut and a foot (2) hut in the same village but you can have a coconut fruit (1) tree and a breadfruit (2) tree in the same village. B) You can have only one god in each village. You can only have one of each type of god in your whole kingdom and the god vp effects are kingdom-wide. B) Each village must begin with a hut. The huts have a picture of a hut on them: foot hut, clam hut, spear hut, exchange hut, and long hut. ''' == Resources == ''' == Base reources == Base resources are on the round indicator. They decrease with each succeeding round. Everyone gets the base resources at the beginning of the round. Any unused resources can be used in the next round. == In-play resource bonuses == *The third, fourth and fifth villages give you 1, 2 and 3 clams respectively when you purchase Kahunas (Hawaiian priests) for them. *When you purchase for your kingdom the second, third and fourth Tikis, you are granted 1, 2, and 3 feet, respectively. *One or two of the island treasures are four fruit resources. == Resource Generators: == generate resources at the beginning of the next round. Fruit level ones - one fruit Fruit level twos - two fruit Clam hut level one - one clam Clam hut level two - two clams Foot hut level one - one foot Foot hut level two - two feet Irrigation level two - one resource of your choice Ku god - level one and two - one foot Kane god level one - one clam Kane god level two - two clams '''== Victory Points ==''' == In-play VP's: == *Going to the islands gives you a vp bonus. *Some of the treasures on the islands are 5 vp's. *Spear huts and the Ku god give you a bonus whenever you take a price token with crossed spears. Level 1 is 1 pt. bonus, Level 2 is two pt. bonus. == Round-End VP's: == There is a large sheild on the round indicator at the bottom. If the sum of price tokens and fish are greater than the number on the sheild, then you get a bonus. There is a large bonus for the player with highest sum score, a moderate bonus for the second highest and a token bonus for everyone else whose sum was greater than the sheild. Surfer place tiles lower the sheild value for qualifying for the bonus but surfers do not contribute to your sum when comparing to other players. Lono god level 1 gives you 2 vp's if you qualify for the bonus, and Lono god level 2 gives you 4 vp's if you qualify for the bonus == Game-End VP's: == A) Each village whose size extends to the Tikis and which possesses a Kahuna is active and receives a bonus, listed next to the Kahunas. The first, second, third, fourth and fifth villages receive five, five, ten, ten and fifteen points respectively. Only active villages score points for place tiles in the village. B) Hula dancer gives you one point for each place tile in her village including herself. Level 2 hula dancer gives you two points instead of one. C) Irrigation gives you pts for each type of fruit you have in that particular village. D) Long Hut level 2 is worth five points. E) Laka god scores one pt for each fruit symbol on your place tiles. Laka god level 2 scores two points for each fruit symbol. F) Kanaloa god scores two pts for each boat and surfer. Kanaloa 2 scores 4 pts for each boat and surfer. c7659be503bee1cb94d917358ea72ccc219c822d Gamehelpcantstop 0 35 92 2012-04-16T17:11:49Z Iakwvina 538 Created page with "Can't Stop is a very easy and fast game! '''How to play''' You roll 4 dices and then you decide which summaries of 2 dices you want to use.When you do that,you place the tem..." wikitext text/x-wiki Can't Stop is a very easy and fast game! '''How to play''' You roll 4 dices and then you decide which summaries of 2 dices you want to use.When you do that,you place the temporary markers on the game board.You are allowed to use 3 temporary markers.These markers are commonly white or black.You continue to roll the dices hoping to bring one of the previous combinations.When you think that it is enough you must say "STOP". Then you replace the white markers with yours.If you roll the dices and there is not possible combination you fail and your progress doesn't be saved.The game board has paths from 2 to 12.The most common are 6,7 and 8 so they have more steps in their paths. '''The object of the game is''' to reach and cover 3 peeks of these paths! 1c67b4df40a8303ccc8214a7e52670b1f7e4ffbe 93 92 2012-04-17T00:45:02Z Jleidich 100 wikitext text/x-wiki Can't Stop is a very easy and fast game! '''How to play''' Roll 4 standard dice and then choose the sums of any 2 dice to advance your position on the board. You are allowed to use 3 temporary markers to track your progress in columns marked 2 through 12. These markers are commonly white or black. You can continue to roll the dice hoping to roll one of the previous combinations in the three columns selected this turn. When you think you've pushed your luck far enough you say "STOP" then pass the dice to the next player and replace the white markers with your own. If you roll the dice and find no useful combination you fail and your progress is lost. The more common numbers on 2d6 (6,7 and 8) have more steps in their paths while the less common combinations (2 and 12) have less. '''The object of the game is''' to reach and cover 3 peaks of these columns! a3f0344e922c7148713a1809f6a3e5275412f2f6 Sponsor 0 36 94 2012-04-17T18:31:04Z Een 3 Redirected page to [[Referral]] wikitext text/x-wiki #REDIRECT [[Referral]] ad3d24fb99469ddbdfa9c56714b949f98a1e82b8 Gamehelphawaii 0 34 101 91 2012-05-20T18:07:54Z Tobylongbeach 477 wikitext text/x-wiki Overview: You are the chieftain of a kingdom (your placemat) with up to five villages (rows). You buy or go to the islands to get place tiles that you put in your villages. There are five rounds and you get a decreasing amount of resources each round with which to acquire place tiles. Its a many-paths-to-victory kind of game. There are three kinds of resources: 1) Feet - let you move around the board, or travel to the islands or go to the cove to catch fish. 2) Clam shells - let you buy place tiles from the board 3) Fruit - can be used in place of feet or clam shells in all-or-nothing fashion. If you substitute for feet, you must substitute the entire moving cost. If you substitute for clams, you must substitute the entire purchase price. Moving: Your chieftain start at the beach and it costs nothing to return there from the board. Each movement in from the beach costs one foot. Moving up, down, right, left or diagonal on the board costs one foot per space. Staying on a space costs one foot. To go to the islands, you use your boats and feet. The closest island costs three feet and the farthest costs six. You have to have the feet as well as the space on the boats for the feet. You get an immediate victory point bonus for going to the islands but you do not get a price token (more about that later). Also, you get the level 2 version of whatever place tile or item you are getting on the islands. For instance, to go to the six foot island, you would need either: A) two three-feet boats and six feet resources or B) you would need the four-foot boat (which comes with a prepaid foot) and the two-foot boat as well as five feet resources. That is the advantage of the pre-paid foot on the four-foot boat. == Purchasing: == To buy some thing from the board: Select the price token (round colored circle with number inside) on the space with the place tile or item you want. If there is more than one place tile available on that space, you will be given a choice of which one you want. The movement cost will be in feet and the purchase price will be in clam shells but you can substitute either or both with fruit if you have it. You gain the price token for the round. There must be an available price token in order to purchase something from that space. You can pay double to get the level 2 version, which for most tiles is double effect. You place it in the village (row) of your choice. You must be able to place it in order to purchase it. A) You can only have one of each type of place tile in each village. For instance, you cannot have a foot (1) hut and a foot (2) hut in the same village but you can have a coconut fruit (1) tree and a breadfruit (2) tree in the same village. B) You can have only one god in each village. You can only have one of each type of god in your whole kingdom and the god vp effects are kingdom-wide. B) Each village must begin with a hut. The huts have a picture of a hut on them: foot hut, clam hut, spear hut, exchange hut, and long hut. ''' == Resources == ''' == Base reources == Base resources are on the round indicator. They decrease with each succeeding round. Everyone gets the base resources at the beginning of the round. Any unused resources can be used in the next round. == In-play resource bonuses == *The third, fourth and fifth villages give you 1, 2 and 3 clams respectively when you purchase Kahunas (Hawaiian priests) for them. *When you purchase for your kingdom the second, third and fourth Tikis, you are granted 1, 2, and 3 feet, respectively. *One or two of the island treasures are four fruit resources. == Resource Generators: == generate resources at the beginning of the next round. *Fruit level ones - one fruit *Fruit level twos - two fruit *Clam hut level one - one clam *Clam hut level two - two clams *Foot hut level one - one foot *Foot hut level two - two feet *Irrigation level two - one resource of your choice *Ku god - level one and two - one foot *Kane god level one - one clam *Kane god level two - two clams '''== Victory Points ==''' == In-play VP's: == *Going to the islands gives you a vp bonus. *Some of the treasures on the islands are 5 vp's. *Spear huts and the Ku god give you a bonus whenever you take a price token with crossed spears. Level 1 is 1 pt. bonus, Level 2 is two pt. bonus. == Round-End VP's: == There is a large sheild on the round indicator at the bottom. If the sum of price tokens and fish are greater than the number on the sheild, then you get a bonus. There is a large bonus for the player with highest sum score, a moderate bonus for the second highest and a token bonus for everyone else whose sum was greater than the sheild. Surfer place tiles lower the sheild value for qualifying for the bonus but surfers do not contribute to your sum when comparing to other players. Lono god level 1 gives you 2 vp's if you qualify for the bonus, and Lono god level 2 gives you 4 vp's if you qualify for the bonus == Game-End VP's: == A) Each village whose size extends to the Tikis and which possesses a Kahuna is active and receives a bonus, listed next to the Kahunas. The first, second, third, fourth and fifth villages receive five, five, ten, ten and fifteen points respectively. Only active villages score points for place tiles in the village. B) Hula dancer gives you one point for each place tile in her village including herself. Level 2 hula dancer gives you two points instead of one. C) Irrigation gives you pts for each type of fruit you have in that particular village. D) Long Hut level 2 is worth five points. E) Laka god scores one pt for each fruit symbol on your place tiles. Laka god level 2 scores two points for each fruit symbol. F) Kanaloa god scores two pts for each boat and surfer. Kanaloa 2 scores 4 pts for each boat and surfer. a5b2616a703904b9170cd5ac89d2fbd3cbbf94d5 Rating 0 16 102 72 2012-05-26T13:50:59Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == How is my ELO ranking computed ? == The BGA ELO system is inspired by the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. Let's try to make it simple: the points you win/lose after each game depends on the ranking of your opponents. If you win at a table with opponents stronger than you, your ranking will increase a lot. If you lose at the same table, your ranking will decrease a little. And so on ... In case there are more than 2 players at the table, we take into account the final rank. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO a6dc048df01d400d3a40159030d500d2c6d0eeb7 103 102 2012-05-26T14:00:10Z Sourisdudesert 1 wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is inspired by the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. Let's try to make it simple: the points you win/lose after each game depends on the ranking of your opponents. If you win at a table with opponents stronger than you, your ranking will increase a lot. If you lose at the same table, your ranking will decrease a little. And so on ... In case there are more than 2 players at the table, we take into account the final rank. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 35a2f8521b67c643b02c1cfed37ce9bd61ac058e 104 103 2012-05-26T14:04:17Z Sourisdudesert 1 /* How is my ELO ranking computed ? */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO e52ee9312119ec37ea571332e9f96cf44c69833b 105 104 2012-05-26T14:04:53Z Sourisdudesert 1 /* Some advice */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO e7710d254d0b0589ff5ca25ac485b8c6f3a44bbf 106 105 2012-05-26T14:15:09Z Sourisdudesert 1 /* How is my ELO ranking computed ? */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. ELO system on BGA has some specificity: * During your first 30 games, your ELO rating is more "elastic": you can win (or loose) more points at each game. This way, your ELO rating converge faster to you "natural" rating. * Original ELO rating system has been designed for 2 player games. For games with more than 2 players, BGA considers (for the ELO rating) that you win a 2-player game against each opponent after you (in game rank) and that you loose a 2-player game against each opponent before you (in game rank). * Games with more than 2 players last longer. For this reason, there's more points to win (or loose) in such games... as long as the number of players does not exceed the "advised number of players" for that game. == Okay, but I want to know the formula ! == At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * Table Level (TL) is the average of ELO ratings of all players at this table. * The success (S) of a player depends directly on its ranking at the game, from S=+470 (winner of the game) to S=-470 (last player). * The performance (P) of a player is TL+S. * The new ELO rating (Rn) is a weighted average of the previous ELO rating (Rp) and the performance: Rn = K.P + (1-K).Rp == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 3cd935f80c6c6f00744f005218d18d42bd5e6acf 107 106 2012-05-26T14:18:41Z Sourisdudesert 1 /* Okay, but I want to know the formula ! */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you loose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. ELO system on BGA has some specificity: * During your first 30 games, your ELO rating is more "elastic": you can win (or loose) more points at each game. This way, your ELO rating converge faster to you "natural" rating. * Original ELO rating system has been designed for 2 player games. For games with more than 2 players, BGA considers (for the ELO rating) that you win a 2-player game against each opponent after you (in game rank) and that you loose a 2-player game against each opponent before you (in game rank). * Games with more than 2 players last longer. For this reason, there's more points to win (or loose) in such games... as long as the number of players does not exceed the "advised number of players" for that game. == Okay, but I want to know the formula ! == The formula is exactly one's used by the ELO rating system, with the following adjustments: * At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * K=60 for the first 30 games, K=40 afterwards. * K is multiply by (N/2) for N-players games. If N exceed the "advised number of players" for this game, K is multiply by (A/2), where A is the "advised number of players". * If 2 players has a rating difference greater than 600, we consider that their ELO difference is 600. == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 83d9c1282c8bbed7224adc1193fa6025698360b1 Gamehelpcaylus 0 37 108 2012-06-08T12:16:00Z Xeno611 648 a fix wikitext text/x-wiki The link above for the rules text is broken, here is the proper one [http://www.ystari.com/caylus/CayUS.pdf Caylus Rule book] dec8842e16c43a0bdf8306d09cefef9977201436 Gamehelpdiams 0 38 109 2012-06-13T20:56:30Z Een 3 Created page with " == Goal == Get as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color or more (up to five). Each color has a matchi..." wikitext text/x-wiki == Goal == Get as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color or more (up to five). Each color has a matching value between 1 to 10. == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market Then you will have to choose between two actions (phase 2): * Select one of your card and go to the market with this card. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose values sum up to the value of the card you went to the market with ** Come back empty ended * Select cards in your hand and secure them into your safe. Your selection: ** Must contain at least one collection ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some cards to keep only 5. == Special cards == == Available variants == '''Have a good game !''' c548022931a8d0df231a0d4b6e840d226e525204 110 109 2012-06-13T21:06:55Z Een 3 wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. On each round, you'll earn victory chips based on the points earned collecting diamonds. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is the '7', not the '10') The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. Your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == == Available variants == '''Have a good game !''' ceb5509a22f4538c3055f3866cc8ebb9dbac81f4 111 110 2012-06-13T21:21:17Z Een 3 /* Available variants */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. On each round, you'll earn victory chips based on the points earned collecting diamonds. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is the '7', not the '10') The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. Your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 643d9f4bc5d615656496eb5a5ed70d66cf6da703 112 111 2012-06-13T21:31:05Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. On each round, you'll earn victory chips based on the points earned collecting diamonds. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is the '7', not the '10') The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. Your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market ''Secur`express'' enables you to secure diamonds of one quality already present in your safe ''Safe drilling'' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent ''Sleight of hand'' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' d596468bbd4851645c67eb9a7a0cb676984c0ec6 113 112 2012-06-13T21:32:39Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10') On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. Your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market ''Secur`express'' enables you to secure diamonds of one quality already present in your safe ''Safe drilling'' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent ''Sleight of hand'' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 43e2f2bf0e3fbfaa319218cfe03ee62cef32271a 114 113 2012-06-13T21:34:02Z Een 3 /* Rules summary */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10') On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market ''Secur`express'' enables you to secure diamonds of one quality already present in your safe ''Safe drilling'' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent ''Sleight of hand'' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 695fba417b313f914ffd6c149492f05049def263 115 114 2012-06-13T21:34:25Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10') On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 19ceabc9061b0a187671c4db40e214f66516dc65 116 115 2012-06-13T21:34:42Z Een 3 /* Available variants */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10') On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 6131f77032d5baa37874120100912d9bdb56cf75 117 116 2012-06-13T21:37:38Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity in his safe (magnifying glass symbol) and for the player whose diamonds digits in hand sum up to the biggest value. On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' d1b0220c82a08620127520971f823abe8813b2b2 118 117 2012-06-13T21:39:26Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity in his safe (magnifying glass symbol, 5 bonus points, 2 points in case of a tie) and for the player whose diamonds digits in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 868fbcf9a41ea50e24a1a14474160cce69b6733b 119 118 2012-06-13T21:40:34Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other and unique power. Available powers are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 6e0a67b750f9a539b72ac427ef89189b58fd6016 120 119 2012-06-13T21:41:33Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' e04a679791f79449ec50aa30c74413cf1e5df788 121 120 2012-06-13T21:42:01Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds. The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 5ac6a2422de77758d42de4dc6cb285e50c1d730e 122 121 2012-06-13T21:45:22Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 and so on). The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' e8f0cd0e229a5b47857ebd7b85a02ae1fabc94d4 123 122 2012-06-13T21:45:39Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many diamond collections as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the most victory chips at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 9cfe856cf374159dc625af28fbb99068cc5d0266 124 123 2012-06-13T21:46:29Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two possibilities (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two actions (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 1f43bf7cba2bf5a15119b37f4e4ca3b63e58f395 125 124 2012-06-13T21:47:30Z Een 3 /* Rules summary */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game !''' 8dbb958af624cfa3ddb5963303e0f8fbfc902997 126 125 2012-06-15T18:53:45Z Een 3 wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 92496c4b6e26fb4f7c997524ee11bcbd1fdf9cd6 127 126 2012-06-15T18:56:45Z Een 3 wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 39b1f29563cdb81647bdd16d15da8b20442a7718 128 127 2012-06-16T13:46:46Z Een 3 wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 8da68d505b4bab957ec3a8b0c562e040f7ced9dc 129 128 2012-06-18T18:49:28Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching quality digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality, or a diamond of exceptional purity, straight from the safe of an opponent '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 7f051d4fe265413fd7537709dbadfe420396ed1f 130 129 2012-06-18T18:51:57Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching quality digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (please take note however, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 45da0f7bedaf3c9f89202f20840a6bd2d54e5c65 131 130 2012-06-18T18:59:23Z Een 3 /* Goal */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (please take note however, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 43ea17ba2484b5535f8073731b3d0c7a6eeafffd 132 131 2012-06-18T18:59:56Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (please take note however that if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 11ee17814253934e13773d95ad05fd1a98616ea9 133 132 2012-06-18T19:00:33Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (of course, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' f7ae2b1fd802f3d68b779ddba760461388c132dd 134 133 2012-06-18T19:47:14Z Een 3 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power you to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (but of course, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 9a4d8f6b6f72f40fca58395367ce2b205dfd0e11 Gamehelpstoneage 0 21 135 99 2012-06-26T15:37:57Z Bastan 978 /* Game end */ wikitext text/x-wiki == Goal == Get the most victory points at the end of the game. You win some points: * during the game, by acquiring buildings. * at the end of the game, according to civilization cards acquired by you. == Rules summary == Each round is divided into 3 phases, which are executed in the order described: 1. The players place their people on the game board. 2. The players use the actions of their placed people. 3. The players feed their people. ===Place your people on the game board=== Players place groups of their people in places, occupying each "ring" by one people (except for the forest place having no rings). Special rules for game with 2 players only: * no more than 1 player may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field Special rules for game with 3 players only: * no more than 2 players may occupy each of the following places: forest, clay pit, quarry, and river. * no more than 2 players may occupy '''the group''' of following places: tool maker, hut, and field ===Use the actions of your placed people=== Each player uses all his placed people in any order, and perform the corresponding actions: * '''hunting grounds, forest, clay pit, quarry, and river''': roll 1 dice per people placed and acquire corresponding resources (1 food for each full 2 on hunting grounds, 1 wood for each full 3 on forest, 1 brick for each full 4 on clay pit, 1 stone for each full 5 on quarry, 1 gold for each full 6 on river). * '''field''': increase agriculture level. * '''tool maker''': get one tool point (new tool is added, up to 3 in total, after that these tools are upgraded). * '''hut''': get one additional people. * '''building card''': buy the building with resources, scoring some points. * '''civilization card''': buy the card with a number of resources (of any kind) depending on its position (1 to 4 resources depicted above the card). Then the immediate effect of the card is applied. ===Resources=== hunting grounds, forest, clay pit, quarry, and river: Roll 1 dice per people and take corresponding resources: * 1 food for each full 2 on hunting grounds, * 1 wood for each full 3 on forest, * 1 brick for each full 4 on clay pit, * 1 stone for each full 5 on quarry, * 1 gold for each full 6 on river. You may use tools to increase the dice result and take more resources. ===Buildings=== Pay the building cost to get the building and receive points. If the building cost is not fixed (question mark in the corner of the card), you win points for each of the resources used to acquire this building, depending on their values (3 for each wood, 4 for each brick, ...). ===Civilization card details=== Each card acquired brings an immediate advantage (depicted on the top half of the card) and some multiplier for final scoring (depicted on the bottom half of the card). Place the mouse cursor on each card to see details in the tooltip. Note that at the list of your acquired civilization cards you will see only the bottom half of each card, for that top half is not relevant anymore. ===Feed your people=== Each agriculture level automatically give you 1 food. You must provide 1 food per person. You may use any resource to feed your people if there is not enough food. If you don't manage to feed your people by means above, you lose 10 points as a penalty. ===Game end=== The game ends when: * there are no more civilization cards at the beginning of a round * one building stack is empty at the end of a round Final number of points for each player is summed out of * points earned during the game by acquiring buildings, minus food penalties, * multipliers denoted at the bottom halfs of civilization cards collected (like number of different culture cards, number of people, tool level etc). * each resource that a player has on his player board scores 1 point a253652bd7e7b7a766518baaba762f793c4fe7f6 Contact us 0 9 136 61 2012-06-27T18:25:25Z Een 3 wikitext text/x-wiki '''Board Game Arena''' is located in France. == Contact e-mail == contact(at)boardgamearena.com We receive ''a lot'' of e-mails. Please do not send us an e-mail in any of these two cases: * If you want to report a bug, please do it in the corresponding forum * If you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile. == Responsible == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 51933312a01a4748b0ec1631205b3a80418dc06d 137 136 2012-06-27T18:29:32Z Een 3 /* Contact e-mail */ wikitext text/x-wiki '''Board Game Arena''' is located in France. == Contact e-mail == contact(at)boardgamearena.com We receive '''a lot''' of e-mails. Please do not send us an e-mail in any of these two cases: * If you want to report a bug, please do it in the corresponding forum * If you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile. == Responsible == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 7bf5a90e4b8f025c1ae505fd06cd2eff3a1e50d2 138 137 2012-06-27T18:29:51Z Een 3 /* Responsible */ wikitext text/x-wiki '''Board Game Arena''' is located in France. == Contact e-mail == contact(at)boardgamearena.com We receive '''a lot''' of e-mails. Please do not send us an e-mail in any of these two cases: * If you want to report a bug, please do it in the corresponding forum * If you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile. == Administrator == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 62315f21725bfc9363f06b56eb43a553eb505eb1 139 138 2012-06-27T18:31:18Z Een 3 /* Administrator */ wikitext text/x-wiki '''Board Game Arena''' is located in France. == Contact e-mail == contact(at)boardgamearena.com We receive '''a lot''' of e-mails. Please do not send us an e-mail in any of these two cases: * If you want to report a bug, please do it in the corresponding forum * If you want to report a player for violation of BGA policy, use the "report this player" button on his/her profile. == Postal address == G. Isabelli 19 bd république 92 260 Fontenay-aux-Roses FRANCE +33 6 17 25 80 34 e608e0a52f031694659de3f162e71fd4c20a7fff Contact 0 39 140 2012-06-27T18:40:51Z Een 3 Redirected page to [[Contact us]] wikitext text/x-wiki #REDIRECT [[Contact us]] 44227f4a379d1cb9c906fc5923f86e642d717086 Aboutus 0 40 141 2012-06-27T18:42:01Z Een 3 Redirected page to [[About us]] wikitext text/x-wiki #REDIRECT [[About us]] bb476bbb3a6b3eb744f44c0fbdfcb920954a6022 Gamehelpraceforthegalaxy 0 41 142 2012-06-28T09:06:10Z Spacediver 718 Created page with "You may drag a resource (single-coloured small card) to a consumption power to consume it." wikitext text/x-wiki You may drag a resource (single-coloured small card) to a consumption power to consume it. f221b6292998d419075a2a637383e0b7808e4b7a 143 142 2012-06-30T06:05:24Z Entropy2k 993 wikitext text/x-wiki In Race for the Galaxy, players are competing civilizations exploring space, discovering planets to conquer or settle, building an economy by consuming a planet's goods, and building developments. The object of the game is to earn the most victory points from planets and developments played in their tableau, consuming goods, and bonuses from special developments. There are 5 phases to choose from: explore, develop, settle, consume, and produce. Players pick 1 phase per turn ( two phases in a 2 player game), then everyone plays only the chosen phases in phase order. Players that chose each phase get an extra benefit. At the end of each round players with more than 10 cards discard down to 10 cards and a new round begins. The game continues until one player plays 12 cards on their tableau or when the VP pool is exhausted. At the end of that round points are added up. The player with the most points is the winner! In case of a tie, the player with the most cards in hand wins. You may drag a resource (single-coloured small card) to a consumption power to consume it. 332ed8ac115c5b36871360de512d2523c65ceca7 Gamehelpdragonheart 0 31 144 96 2012-07-14T21:55:41Z Crazy c 1053 /* Cards */ wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 2 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it is. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards are played ends the game and the opponent takes one final turn. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus three extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. cb9673f3d13c9a0f1bbdc1666c6d3f1298f6486f 145 144 2012-07-14T21:57:15Z Crazy c 1053 /* End */ wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 3 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it is. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards are played ends the game and the opponent takes one final turn. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus three extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. e984bb914251f4a0f157c7a0785d53b3d4905237 146 145 2012-07-14T21:58:29Z Crazy c 1053 /* End */ wikitext text/x-wiki ==Summary== Dragonheart is a two player card game where the goal is to collect as many points as possible by placing your cards on the board and collecting the cards already placed there. There are 9 different cards, each with their own rules as to which cards can be collected when they are placed down. ==Goal== To have the most points by the end of the game. ==Game Start== At the start of the game, each player takes five cards from their deck and the Great Dragon piece is put on the board. ==End== The game ends when all nine ship cards have been used, or one players deck is exhausted. At that point, each player adds the value of all the cards in their respective piles, plus 3 extra points to whomever has the Great Dragon piece. Whoever has the most points, wins the game. In case of a tie, the player with the Great Dragon wins. ==Turns== Players alternate turns, putting down and picking up cards. A player may choose to put down as many cards of the same type as he or she wants to. The cards get placed on their corresponding picture on the game board. Depending on what was placed, a player may take cards from the board to put in their pile, or move cards to the bottom of the board, below the ship. ==Cards== There are five types of cards in the game. Cards have a point value to them listed as a number in the corner, that is unrelated to what type of card it is. Arrows on the board indicate what cards can take what. * ''Dwarf'': The player who places the fourth dwarf on the board, takes all four of the dwarf cards. No other card allows a player to take a dwarf. * ''Huntress'': The player who places the third huntress card, takes all fire dragon cards from the board. At that point, the three huntress cards are moved to the bottom of the board. * ''Fire Dragon'': Each time a fire dragon is placed, the player takes all of the treasure chest cards. * ''Treasure Chest'': Placing this card has no action, but it can be taken by a fire dragon or sorceress. * ''Troll'': Placing this card allows the player to take the sorceress pile. * ''Knight'': The player who places the second knight card, may choose to take either the sorceress or troll pile. Afterwards, the two knight cards are placed at the bottom of the board. * ''Petrified Dragon'': Placing this card has no effect, but when it is taken by a sorceress, the Great Dragon piece is taken too, either from the board or from the opponent. * ''Sorceress'': Placing a sorceress allows the player to take either the petrified dragon pile, or the treasure pile. Taking the petrified dragon cards (if there are any on the board) gives the player possession of the Great Dragon. * ''Ship'': The third ship card placed, allows the player to take all the knight and huntress cards placed at the bottom of the deck. The ship cards are then discarded. The third time that three ship cards are played ends the game and the opponent takes one final turn. * ''Great Dragon'': The great dragon piece goes to the last player to take a petrified dragon stack. Possession of the Great Dragon gives the player an extra card, plus three extra points at the end of the game. If the dragon is taken from an opponent, then the player gets a random card from the opponents hand. 3e0a5f8d9ad58be87706271bf73b4fcc52471ff6 Gamehelptobago 0 27 147 87 2012-07-19T06:49:54Z Crazy c 1053 /* 2) Move ATV from 1 to 3 legs */ wikitext text/x-wiki == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map indicate where the treasure can be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after the last treasure card has been given out. '''Have a good game !''' 162a27ee6a534e10c342b291885452d9fdf04053 148 147 2012-07-19T07:09:01Z Crazy c 1053 /* 1) Play a clue card from his hand */ wikitext text/x-wiki == Goal == Get as many gold coins as you can by locating treasures on the Tobago island and sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. The player can decide which treasure map he wants to play his clue card on. In order to play a clue card on a map you must make sure that: *The new clue card mustn't contradicted any present clue cards of the specific treasure map. *The new clue card must reduce at least one marker from the current amount of markers of the specific treasure map (if there are markers on the board. If there are no markers on the board, you can still put a clue card even if it doesn't change anything). *The new clue card must keep it possible for at least one marker to stay on the board (a treasure cannot disappear from the board). When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map are placed on the island, indicating where the treasure might be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after the last treasure card has been given out. '''Have a good game !''' e77ddbfe3be6e45d3526a4e0ace96c704f87d2b8 149 148 2012-07-19T07:10:35Z Crazy c 1053 /* Goal */ wikitext text/x-wiki == Goal == Be the player with the most gold coins by locating treasures on the Tobago island and/or sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. The player can decide which treasure map he wants to play his clue card on. In order to play a clue card on a map you must make sure that: *The new clue card mustn't contradicted any present clue cards of the specific treasure map. *The new clue card must reduce at least one marker from the current amount of markers of the specific treasure map (if there are markers on the board. If there are no markers on the board, you can still put a clue card even if it doesn't change anything). *The new clue card must keep it possible for at least one marker to stay on the board (a treasure cannot disappear from the board). When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map are placed on the island, indicating where the treasure might be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. When a treasure is raised, the current move is finished, even if the player has not used all the legs to which he was entitled. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! The game ends after the last treasure card has been given out. '''Have a good game !''' 1349f4ae9b3bc89321b0a00622234f29a6611878 150 149 2012-07-19T07:22:16Z Crazy c 1053 /* 2) Move ATV from 1 to 3 legs */ wikitext text/x-wiki == Goal == Be the player with the most gold coins by locating treasures on the Tobago island and/or sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. The player can decide which treasure map he wants to play his clue card on. In order to play a clue card on a map you must make sure that: *The new clue card mustn't contradicted any present clue cards of the specific treasure map. *The new clue card must reduce at least one marker from the current amount of markers of the specific treasure map (if there are markers on the board. If there are no markers on the board, you can still put a clue card even if it doesn't change anything). *The new clue card must keep it possible for at least one marker to stay on the board (a treasure cannot disappear from the board). When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map are placed on the island, indicating where the treasure might be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. ===3) Treasure sharing and amulets=== When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. Raising a treasure will end a player's turn, even if the player has not used all 3 legs. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! ===End of the game=== The game ends after the last treasure card has been given out. '''Have a good game !''' 3006885193bc285203a8f1e9db8ee4f4e3a7c323 Gamehelptobago 0 27 151 150 2012-07-19T07:28:59Z Crazy c 1053 /* End of the game */ wikitext text/x-wiki == Goal == Be the player with the most gold coins by locating treasures on the Tobago island and/or sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. The player can decide which treasure map he wants to play his clue card on. In order to play a clue card on a map you must make sure that: *The new clue card mustn't contradicted any present clue cards of the specific treasure map. *The new clue card must reduce at least one marker from the current amount of markers of the specific treasure map (if there are markers on the board. If there are no markers on the board, you can still put a clue card even if it doesn't change anything). *The new clue card must keep it possible for at least one marker to stay on the board (a treasure cannot disappear from the board). When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map are placed on the island, indicating where the treasure might be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. ===3) Treasure sharing and amulets=== When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. Raising a treasure will end a player's turn, even if the player has not used all 3 legs. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! ===End of the game=== The game ends when the treasure card pile runs out. '''Have a good game !''' dae010445287c763c8ab4bb06d1c09883e19707b 161 151 2012-08-27T23:39:45Z Villager 1295 /* 3) Treasure sharing and amulets */ wikitext text/x-wiki == Goal == Be the player with the most gold coins by locating treasures on the Tobago island and/or sharing them with other players. == Rules summary == On their turn, each player can choose one of two actions: ===1) Play a clue card from his hand=== The clue cards give the positioning of a treasure for a map of a given color relative to a land type (jungle, mountains, beach, scrubland, river, lake or sea) or to a landmark (palm tree, hut or statue). Positioning clues are as follows: in, next to, in sight of, not in, not next to, not in sight of. When the position is given relative to a land type, if there are red brackets above and below the land type it means that the land to use for this clue is the largest of this type. The player can decide which treasure map he wants to play his clue card on. In order to play a clue card on a map you must make sure that: *The new clue card mustn't contradicted any present clue cards of the specific treasure map. *The new clue card must reduce at least one marker from the current amount of markers of the specific treasure map (if there are markers on the board. If there are no markers on the board, you can still put a clue card even if it doesn't change anything). *The new clue card must keep it possible for at least one marker to stay on the board (a treasure cannot disappear from the board). When less than 17 spaces on the island match the clues for a treasure map, markers of the color of the map are placed on the island, indicating where the treasure might be. When there is only one of these markers left, the treasure is located and can be raised. ===2) Move ATV from 1 to 3 legs=== A leg is a move of: * either as many spaces as you want in the same land type * or only one space when moving from one land type to another. ===3) Treasure sharing and amulets=== When a player's ATV is on an island space containing an amulet, the player can pick it up. If the ATV is on a space containing a treasure that has been located, he can raise it, and then players have to share it. Raising a treasure will end a player's turn, even if the player has not used all 3 legs. Sharing of the treasure happens solely between the players who took part in its discovery, either by playing clue cards on the treasure map, or by raising the treasure. Each player is presented with as many treasure cards as they have windroses of their color representing their participation in the discovery of the treasure (a windrose is placed on each clue card that is played, and a windrose is also placed under the last clue card of the map for the player who raises the treasure). The other players do not see these cards. An additional card is taken from the deck and the cards are shuffled. Each player in turn, in the reverse order of placement of windroses on the treasure map, draws a card amidst those belonging to this treasure and chooses either to take it and withdraw his windrose from the map, or to give it to the next player (in the order set by the windroses as described before) who is then presented with the same choice. If no player accepts it, the treasure card is discarded. Two curse cards can be found among the treasure cards. If a curse card is drawn, treasure sharing is over, and all players who are still involved in sharing the treasure (ie players with windroses on the map for the treasure being shared) can either protect themselves by sacrificing an amulet, or lose their most valuable treasure card. When the treasure sharing is over, the last player to have been granted a treasure card must reopen the treasure hunt by playing one clue card for the now empty treasure map. Then, mysterious amulets appear where the gaze of statues strikes the coast, and statues rotate on their base. Once collected, an amulet can be spent at any time during a player's turn to do one of 4 possible actions: * play a clue card * remove a treasure marker * move his ATV three legs (NB: it is not possible to collect other amulets while moving thanks to an amulet.. BUT you can RAISE a treasure!) * to exchange the clue cards from his hand with clue cards from the deck Proper use of amulet power is critical to ensure victory! ===End of the game=== The game ends when the treasure card pile runs out. '''Have a good game !''' 953052c0da61d4fc18048a92604e5b53e2e54e84 Gamehelpdiams 0 38 152 134 2012-07-22T09:03:02Z Crazy c 1053 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will loose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (but of course, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 33228376d9a780183c2c7c45fc52dae361572e2d 153 152 2012-07-22T09:04:15Z Crazy c 1053 /* Special cards */ wikitext text/x-wiki == Goal == Secure as many '''diamond collections''' as you can in your safe! A collection is a set of three diamonds of the same color, or more (up to five). Each color has a matching 'quality' digit ranging from 1 to 10. Collections are worth more or less depending upon the diamond color and the number of diamonds (be careful to check the collection values, the most valuable diamond is '7', not '10'). Bonus points will be earned at the end of the round : * for the player with the most diamonds of exceptional purity (magnifying glass symbol) in his safe (5 bonus points, 2 points in case of a tie) * and for the player whose digits for the diamonds still in hand sum up to the biggest value (3 bonus points, tie or no tie). On each round, you'll earn victory chips based on the points earned collecting diamonds (the 1st player gets 4 chips, the 2d gets 3 chips and so on). The player with the '''most victory chips''' at the end of three rounds wins! (in case of a tie, it's the player who won the 2d round who will get the victory) == Rules summary == On your turn, you must first choose between two 'draw actions' (phase 1): * Draw one card and put it in your hand * Draw two cards and put them on the market. Then you will have to choose between two 'play actions' (phase 2): * Select one of your cards and go to the market with it. Once on the market, you can: ** Take all cards of the same color than the one you went to the market with (including it) ** Take a selection of cards whose digits sum up to the digit of the card you went to the market with ** Or come back empty ended... * Select cards in your hand and secure them into your safe. In order to be valid, your selection: ** Must contain at least one collection (three diamonds of the same color) ** Can contain diamonds matching a collection already present in your safe (in order to expand the collection) At the end of your turn, if you have more than 5 cards in your hand, you will have to discard some to keep only 5. == Special cards == Three special cards give you the power to play tricks on your opponents '''instead of playing phase 2'''. Each of these cards can be used either with the 'Compulsory sale' power that they all share, or with their other (and unique) power. Power effects are as follows: '''Compulsory sale''' enables you to get all diamonds of a quality that you have in your hand from the market ''after'' forcing an opponent to put all his diamonds of this quality on the market (but be careful! If he doesn't have any, you will lose yours!) '''Secur`express''' enables you to secure diamonds of one quality already present in your safe '''Safe drilling''' enables you to get a diamond of a given quality and purity, straight from the safe of an opponent (but of course, if your opponent doesn't have any diamond of this kind, drilling will fail!) '''Sleight of hand''' enables you to take any diamond you want from the market, just like that! == Available variants == '''Game length''': the 'Standard' game is played in 3 rounds. The 'Quick game' variant makes it possible to play a game in just one round when you are in a hurry to get lots of pretty diamonds to pay back your Can't stop gambling debts! '''Closing card''': in the 'Standard' game, the closing card is randomly shuffled among the last 15 cards at 2/3 players, and among the last 5 cards at 4/5 players. With the 'Deterministic' variant, the closing card is the last one, so you can try to outthink your opponents till the very end! '''Have a good game!''' 1129c9ce9f9cc7e7d942da196bfc69693fd04ca7 Gamehelpunitedsquare 0 42 154 2012-07-22T09:46:01Z Crazy c 1053 Created page with "===goal=== The goal is to be the player who has the most squares of his colors. ===rules=== The game contains multicolored squares (red, blue. yellow and green) which appear ..." wikitext text/x-wiki ===goal=== The goal is to be the player who has the most squares of his colors. ===rules=== The game contains multicolored squares (red, blue. yellow and green) which appear as 4 colored triangles on the square. Each player on his turn puts a multicolored square next to a square already on the board. The played square (which can be shifted to fit as requested, keeping the order of the colors the same) must be put in a way that creates at least on colored square (not necessarily your color). If it is not possible for the player to put down a square, the turn is passed to the next player. It is also possible to have "non playable" squares which are created when 2 of the same color are connected to the same open square. This is also a strategy to prevent from your opponent from getting more squares of his color. (e.g. if there is a red triangle facing an empty square and i connect to that same empty square another red triangle from another side, the empty square cannot be played and all colors around the "non playable" square will not become squares and won't gain points). ===ending the gsme=== When all playable squares have been played, the player with the most squares of his color wins the game. HAVE A GOOD GAME! 69c010a69b9893a52e587fba072f34ad0c9fbb12 155 154 2012-07-22T09:46:59Z Crazy c 1053 /* ending the gsme */ wikitext text/x-wiki ===goal=== The goal is to be the player who has the most squares of his colors. ===rules=== The game contains multicolored squares (red, blue. yellow and green) which appear as 4 colored triangles on the square. Each player on his turn puts a multicolored square next to a square already on the board. The played square (which can be shifted to fit as requested, keeping the order of the colors the same) must be put in a way that creates at least on colored square (not necessarily your color). If it is not possible for the player to put down a square, the turn is passed to the next player. It is also possible to have "non playable" squares which are created when 2 of the same color are connected to the same open square. This is also a strategy to prevent from your opponent from getting more squares of his color. (e.g. if there is a red triangle facing an empty square and i connect to that same empty square another red triangle from another side, the empty square cannot be played and all colors around the "non playable" square will not become squares and won't gain points). ===ending the game=== When all playable squares have been played, the player with the most squares of his color wins the game. HAVE A GOOD GAME! fc984f3d37b1db341a2475115260c766cf2def67 Gamehelpseasons 0 43 156 2012-08-13T15:53:58Z Jolelaw 1170 Game help for Season Board Game wikitext text/x-wiki Season is a game of generating points (crystal) by choosing the correct combination of dice and the activation of card powers. The game goes by each player separating their 9 cards into 3 packs of 3 cards. The card will be return to the player on the starting of each cycle. Each player can choose only one die per turn. The effects are as follows: Star - increase the maximum card player can summon (max 15) Elements - Gain an energy of the element shown (water, earth, air, fire) Numbers - Gain the number of Crystals as indicated by the number Square card - Draw a card Dice with frames surrounding - Allow user to transmute energy into crystal (depend on which part of the game is at) Dots - Indicate how fast the marker progress through the seasons cycle There is also a maximum of 3 helps provided at the cost of point deduction at the end of the game. The help will cost 5 points for the 1st time, 7 for the 2nd and 8 for the 3rd. There is 4 type of helps which include adding a star, allow user to transmute this turn, change 2 energy into any element and allow user to choose a card out of 2 cards (must use with draw card dice). At the end of the game the points are calculated by adding the numbers on each card and the crystal owned. The player with the most victory points wins. Note: Users need to discard energy immediately if the energy is more than the slots allocated. Card summon by other card but due to limitation of the star will cause the new card to be discarded, no refund. ad8bf0ef8a56d186cb4e1a72485c86c9a94fb6ca 157 156 2012-08-13T15:55:10Z Jolelaw 1170 wikitext text/x-wiki Season is a game of generating points (crystal) by choosing the correct combination of dice and the activation of card powers. The game goes by each player separating their 9 cards into 3 packs of 3 cards. The card will be return to the player on the starting of each cycle. Each player can choose only one die per turn. The effects are as follows: Star - increase the maximum card player can summon (max 15) Elements - Gain an energy of the element shown (water, earth, air, fire) Numbers - Gain the number of Crystals as indicated by the number Square card - Draw a card Dice with frames surrounding - Allow user to transmute energy into crystal (depend on which part of the game is at) Dots - Indicate how fast the marker progress through the seasons cycle There is also a maximum of 3 helps provided at the cost of point deduction at the end of the game. The help will cost 5 points for the 1st time, 7 for the 2nd and 8 for the 3rd. There is 4 type of helps which include adding a star, allow user to transmute this turn, change 2 energy into any element and allow user to choose a card out of 2 cards (must use with draw card dice). At the end of the game the points are calculated by adding the numbers on each card and the crystal owned. The player with the most victory points wins. Note: Users need to discard energy immediately if the energy is more than the slots allocated. Card summon by other card but due to limitation of the star will cause the new card to be discarded, no refund. 52bce609540fca265df665f782174a6e635e6c51 185 157 2012-09-21T07:54:53Z Talia 1349 Appending description of the Transmute +1 bonus action. wikitext text/x-wiki Season is a game of generating points (crystal) by choosing the correct combination of dice and the activation of card powers. The game goes by each player separating their 9 cards into 3 packs of 3 cards. The card will be return to the player on the starting of each cycle. Each player can choose only one die per turn. The effects are as follows: Star - increase the maximum card player can summon (max 15) Elements - Gain an energy of the element shown (water, earth, air, fire) Numbers - Gain the number of Crystals as indicated by the number Square card - Draw a card Dice with frames surrounding - Allow user to transmute energy into crystal (depend on which part of the game is at) Dots - Indicate how fast the marker progress through the seasons cycle There is also a maximum of 3 helps provided at the cost of point deduction at the end of the game. The help will cost 5 points for the 1st time, 7 for the 2nd and 8 for the 3rd. There is 4 type of helps which include adding a star, allow user to transmute this turn with an additional crystal gained for each energy transmuted, change 2 energy into any element and allow user to choose a card out of 2 cards (must use with draw card dice). At the end of the game the points are calculated by adding the numbers on each card and the crystal owned. The player with the most victory points wins. Note: Users need to discard energy immediately if the energy is more than the slots allocated. Card summon by other card but due to limitation of the star will cause the new card to be discarded, no refund. aad2a6045db9fb9588409b7c8abd0a0a8e134f43 About us 0 6 158 27 2012-08-15T04:17:28Z Suds307 1213 wikitext text/x-wiki First, we should say that we are gamers. Real, complete boardgames addicts. We designed '''Board Game Arena''' for players who can't play for real because of time, geographic or social constraints. We would like to provide a new game experience with the best of two worlds: video games and board games. Although we aim to provide high quality online games, we are still convinced that the best way to enjoy board games is around a *real* table with friends. This is one of the reason we strongly recommend you to buy physical copies of the games you discover on BGA. The other reason is simple to understand: each game sale is also a revenue for an author and an editor (... we've come full circle). [[Contact us]] 3df742bb9998193b9edd78eb592b6c63e09eb5fd Translation guidelines 0 18 159 68 2012-08-19T18:58:42Z Rokras 1237 /* I fixed some translations, but they don't appear to have changed on the site */ wikitext text/x-wiki The [http://en.boardgamearena.com/#!translationhq collaborative translation system] is meant to make it possible to translate Board Game Arena into any language, in order to enable more people to discover and play board games, even when not knowing English or French. For example, if you want to play 'Dragonheart' with your 10-year-old nephew and he doesn't speak English yet, no problem! Just help us translate Board Game Arena into your language! == What can be translated? == Every string of text for the main site interface and for the games' interfaces are 'internationalized' and can be translated. For now, forum posts and articles of the website (such as this one), cannot be translated. Maybe sometime later... == Who should translate? == This is important: only translate text into a given language if you are a native speaker of the language. When translating a game, the translator should know the game thoroughly and if possible have a box and rulebook of the game in the destination language to check for consistency. Translators should take into account the level of language and the formal/informal pronominal rules usual for the gaming audience of their country. As Board Game Arena's team's mother tongue is French, we will take charge of the French translations. We will also release the first version of the English translation. As we are not perfect speakers of Shakespeare's language, these translations will be open for review and correction by native English speakers under the same conditions as the other languages. == About context == Some strings can be translated differently depending upon the context. When this is the case, you should use the most obvious translation. Then when the site has been released in your language, native speakers will spot incorrect forms (if any) while playing and be able to correct them. Also, you can ask us for context in the [http://forum.boardgamearena.com/viewforum.php?f=11 translation forum] (in English or in French), and we will try to look it up and provide the information. == When will the site be made available in a new language it is being translated into? == As soon as a sufficient number of the strings have been translated in the new language in order for the site to make sense into that language, the Board Game Area team will make the site available in the language. == I fixed some translations, but they don't appear to have changed on the site == Translation files are updated nightly, so you just have to wait till the tomorrow for your changes to appear on the site. == How long will it be possible to change the translations? == The first translations may not be perfect (as explained in the 'about context' section). So they can be modified until they are 'validated'. Validation occurs when a translation has not been modified for 30 days straight. It is then considered stable and valid (golden icon) and cannot be changed anymore. == Is there some reward for translating? == Yes! Every translator that gets 100 translations validated (golden icon) will get one free month of 'Board Game Arena Club' membership (and one more month for every batch of 100 new translations validated). This is of course only a symbolic gesture of thanks for people participating in making BGA accessible to more and more people. The possibility to enjoy board games with people from many countries is the greatest reward of all! == Translation tips == * Use the 'TAB' key to go from one text box to another. This is easier than clicking. * Strings such as ${SOMETHING}, %SOMETHING, <SOMETHING> are markup strings for formatting or substituting text and must be left as is. Their position in the overall string can be changed as appropriate in a given language (for example for pronouns such as ${you}). * When in doubt, leave a comment for the next translator. * When you fix someone's translation, leave a comment if the reason for the change is not obvious. * When the translation can depend on context which is not explicit, go with the most straightforward translation. If it is not correct, it will be spotted and fixed later by native speakers while playing. 39afad37613aa3eedd26702970c7420d0a87fc44 Reputation 0 17 160 73 2012-08-27T02:15:45Z Villager 1295 /* How to increase my reputation / what makes my reputation decrease ? */ wikitext text/x-wiki [[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To achieve this goal, each player has a '''reputation profile''' which is the representation of his general attitude with others players. This profile is composed of 3 items: * Opinions from other players (http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png) * % of games you finished * % of games you finished with no clock penalties Seeing the reputation profile of a player, you are able to check if his behavior is good, if he won't quit the game before the end, and if he respect time limits. == How to increase my reputation / what makes my reputation decrease ? == At any time, you can give others players http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png marks. * a http://fr.boardgamearena.com/theme/img/common/reputation_up.png if you liked to play with him/her, and recommend to play with this player. * a http://fr.boardgamearena.com/theme/img/common/reputation_down.png if you disliked to play with him/her, and discourage others to play with this player. You can only give a single thumb (green or red) to a single player. If your opinion evolved you can click again on a thumb to reflect this change. As soon as you give a "red thumb" to a player, a warning message is displayed when you try to join a table where this player is. In this situation it is recommended to leave the game or to expel this player. By nature, opinions are subjectives. There is nothing we can do for you if you receive a for an unfair reason. However, we know by experience that this system has a lot of advantages and give a relevant information. Qn: its unclear if the "> 10% unfavorable" warning is calculated against the number of "thumbs up / thumbs down".. or "total number of unique players played with / thumbs down". Hope the formula is the latter.. as the first formula will raise many more warnings.. more idiots give thumbs down, and are lazier to give thumb up. == Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png == * Be polite ! Say at least "hello" and "good luck" at the beginning of the game. "good game" ("gg") at the end of the game. * When you need some time to think, click on "I would like to think a little" link. * Stay calm in any circumstances: it's a game. * Don't press your opponent to play if he has some time left. * If you really can't finish the game (this is not supposed to happened...), then say you are sorry and leave the game by your own to save your opponents time. * Be a good loser: if your lose because of bad luck or a strategy you dislike, don't blame the luck or your opponent (and don't give him a http://fr.boardgamearena.com/theme/img/common/reputation_down.png for this reason!). * Be a good winner: if your opponent makes a mistake you can signal it to him, but avoid triumphalism and provocation. == What are the consequences of a bad reputation ? == A bad reputation makes you suspect to your potential opponents. You will have to explain your situation, and maybe some players won't take the risk to play with you. It is also possible to filter players by reputation on a table. The worse your reputation is, the bigger difficulties you will have to find opponents. d9004c71be8151f6e6ca1166b60f3f1e209e452c 165 160 2012-09-08T18:11:50Z Complete muppet 1365 /* Advices: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png */ wikitext text/x-wiki [[Category:Help]] == What is reputation ? == On '''Board Game Arena''', we would like to have a strong competitive atmosphere with a respectful and fair play ambiance. To achieve this goal, each player has a '''reputation profile''' which is the representation of his general attitude with others players. This profile is composed of 3 items: * Opinions from other players (http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png) * % of games you finished * % of games you finished with no clock penalties Seeing the reputation profile of a player, you are able to check if his behavior is good, if he won't quit the game before the end, and if he respect time limits. == How to increase my reputation / what makes my reputation decrease ? == At any time, you can give others players http://fr.boardgamearena.com/theme/img/common/reputation_up.png and http://fr.boardgamearena.com/theme/img/common/reputation_down.png marks. * a http://fr.boardgamearena.com/theme/img/common/reputation_up.png if you liked to play with him/her, and recommend to play with this player. * a http://fr.boardgamearena.com/theme/img/common/reputation_down.png if you disliked to play with him/her, and discourage others to play with this player. You can only give a single thumb (green or red) to a single player. If your opinion evolved you can click again on a thumb to reflect this change. As soon as you give a "red thumb" to a player, a warning message is displayed when you try to join a table where this player is. In this situation it is recommended to leave the game or to expel this player. By nature, opinions are subjectives. There is nothing we can do for you if you receive a for an unfair reason. However, we know by experience that this system has a lot of advantages and give a relevant information. Qn: its unclear if the "> 10% unfavorable" warning is calculated against the number of "thumbs up / thumbs down".. or "total number of unique players played with / thumbs down". Hope the formula is the latter.. as the first formula will raise many more warnings.. more idiots give thumbs down, and are lazier to give thumb up. == Advice: how to get plenty of http://fr.boardgamearena.com/theme/img/common/reputation_up.png == * Be polite! Say at least "hello" and "good luck" at the beginning of the game, and maybe "good game" ("gg") at the end of the game. * When you need some time to think, click on "I would like to think a little" link. * Always stay calm: it's a game. * Don't press your opponent to play if he has some time left. * If you really can't finish the game (this is not supposed to happen...), then say you are sorry and leave the game (don't wait to get expelled) to save your opponents time. * Be a good loser: if your lose because of bad luck or a strategy you dislike, don't blame the luck or your opponent (and don't give him a http://fr.boardgamearena.com/theme/img/common/reputation_down.png for this reason!). * Be a good winner: if your opponent makes a mistake you can signal it to him, but avoid triumphalism and provocation. == What are the consequences of a bad reputation ? == A bad reputation makes you suspect to your potential opponents. You will have to explain your situation, and maybe some players won't take the risk to play with you. It is also possible to filter players by reputation on a table. The worse your reputation is, the bigger difficulties you will have to find opponents. 7dd2d7d9b84788c2193110bb923f60b6b20dec5b Game clock 0 15 162 34 2012-09-08T18:06:25Z Complete muppet 1365 /* Time to think */ wikitext text/x-wiki [[Category:Help]] On '''Board Game Arena''' you are playing "live" (real time). Then you has a delay to play your moves. Your initial delay at the beginning of a game is most of the time '''3 minutes'''. At each turn, or on specific occasion, you get an additional delay. If you have no more time to play, you will get a penalty and can become eligible to be expelled from the game. == Time to think == Your alloted time to think is displayed on the right of your player's name. When it's your turn to play. This time is also displayed at the top of the web page. == Game speed == Table administrator can make a choice between 4 game speed profile: * Fast * Normal * Slow * Without time limit The additional amount of time credited each turn depends on chosen game speed profile. Be careful to check game speed before game start to adapt your timing. Note: playing without time limit is strongly discouraged, except if you are playing with friends or to discover a new game. Remember that without time limit, you can't expel a player that stops playing. == Running out of time == As soon as you run out of time, you get a clock penalty. If you goes over your alloted time by more than 3/4/5 minutes (depending on game speed), any opponent can expel you from the game. Of course, it is strongly advised not to run out of time ... == Move time limit == In addition to your classical time to think, you have a limited time alloted for each move. When it's your turn to play, a red bar appears on top of the web page. It symbolized the remaining time limit for this move. The amount of time depends on game speed. If you goes over this limit, you become eligible to be expelled from the game. == "My opponent is too slow" == Each of us has different expectations on game speed. Please remember that as soon as a table has been set up at a given game speed, each player is allowed to use all his alloted time to think. If you want to play fast, set up or join table with "fast" mode only, but don't force an opponent to play when he has the right to do so. == "I would like to think a little" == If you are in a critical step of the game and want to take some time to think, you can click on the link "I would like to think a little" on the top right of the page. Thus, your opponents will receive a message and won't be thinking you are away from keyboard. Clicking on this link is not mandatory, but we encourage its use for courtesy. 5d8716bd998afb9592ab1dc42cf952b41d0cb657 163 162 2012-09-08T18:06:47Z Complete muppet 1365 /* Time to think */ wikitext text/x-wiki [[Category:Help]] On '''Board Game Arena''' you are playing "live" (real time). Then you has a delay to play your moves. Your initial delay at the beginning of a game is most of the time '''3 minutes'''. At each turn, or on specific occasion, you get an additional delay. If you have no more time to play, you will get a penalty and can become eligible to be expelled from the game. == Time to think == Your alloted time to think is displayed on the right of your player's name. When it's your turn to play, this time is also displayed at the top of the web page. == Game speed == Table administrator can make a choice between 4 game speed profile: * Fast * Normal * Slow * Without time limit The additional amount of time credited each turn depends on chosen game speed profile. Be careful to check game speed before game start to adapt your timing. Note: playing without time limit is strongly discouraged, except if you are playing with friends or to discover a new game. Remember that without time limit, you can't expel a player that stops playing. == Running out of time == As soon as you run out of time, you get a clock penalty. If you goes over your alloted time by more than 3/4/5 minutes (depending on game speed), any opponent can expel you from the game. Of course, it is strongly advised not to run out of time ... == Move time limit == In addition to your classical time to think, you have a limited time alloted for each move. When it's your turn to play, a red bar appears on top of the web page. It symbolized the remaining time limit for this move. The amount of time depends on game speed. If you goes over this limit, you become eligible to be expelled from the game. == "My opponent is too slow" == Each of us has different expectations on game speed. Please remember that as soon as a table has been set up at a given game speed, each player is allowed to use all his alloted time to think. If you want to play fast, set up or join table with "fast" mode only, but don't force an opponent to play when he has the right to do so. == "I would like to think a little" == If you are in a critical step of the game and want to take some time to think, you can click on the link "I would like to think a little" on the top right of the page. Thus, your opponents will receive a message and won't be thinking you are away from keyboard. Clicking on this link is not mandatory, but we encourage its use for courtesy. 7995e4abd5d929043908bb375a931bc0fc50a79b 164 163 2012-09-08T18:09:41Z Complete muppet 1365 wikitext text/x-wiki [[Category:Help]] On '''Board Game Arena''' you are playing "live" (real time). That means you have an allotted delay to play your moves. Most of the time, your initial delay at the beginning of a game is '''3 minutes'''. During each turn, or on specific occasions, you get an additional delay. If you have no more time to play, you will get a penalty and can become eligible to be expelled from the game. == Time to think == Your allotted time to think is displayed on the right of your player's name. When it's your turn to play, this time is also displayed at the top of the web page. == Game speed == Table administrator can make a choice between 4 game speed profile: * Fast * Normal * Slow * Without time limit The additional amount of time credited each turn depends on chosen game speed profile. Be careful to check game speed before game start to adapt your timing. Note: playing without time limit is strongly discouraged, except if you are playing with friends or to discover a new game. Remember that without time limit, you can't expel a player that stops playing. == Running out of time == As soon as you run out of time, you get a clock penalty. If you goes over your alloted time by more than 3/4/5 minutes (depending on game speed), any opponent can expel you from the game. Of course, it is strongly advised not to run out of time ... == Move time limit == In addition to your classical time to think, you have a limited time alloted for each move. When it's your turn to play, a red bar appears on top of the web page. It symbolized the remaining time limit for this move. The amount of time depends on game speed. If you go over this limit, you become eligible to be expelled from the game. == "My opponent is too slow" == Each of us has different expectations on game speed. Please remember that as soon as a table has been set up at a given game speed, each player is allowed to use all his allotted time to think. If you want to play fast, set up or join table with "fast" mode only, but don't force an opponent to play when he has the right to do so. == "I would like to think a little" == If you are in a critical step of the game and want to take some time to think, you can click on the link "I would like to think a little" on the top right of the page. Thus, your opponents will receive a message and won't be thinking you are away from keyboard. Clicking on this link is not mandatory, but we encourage its use for courtesy. 8e7b80d9cbd9b3f6552a666e0ca9793092c8f5b3 Gamehelpcolorpop 0 44 166 2012-09-08T18:33:11Z Davejhave 776 Created page with "Select adjacent colored tokens in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens..." wikitext text/x-wiki Select adjacent colored tokens in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as any color. You must pop all adjacent tokens of the same color. 0a4173a50ab5172c145b15e28e7a9496b9078db5 167 166 2012-09-08T18:47:19Z Davejhave 776 wikitext text/x-wiki Select adjacent colored tokens in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as any color. Win instantaly by popping all of your secret colored tokens. You must pop all adjacent tokens of the same color. 17b1fb1d81ac204da6e965e9ebd8afcd310f6572 168 167 2012-09-09T12:32:33Z Een 3 wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva ([http://www.coloradd.net/ ColorADD]). '''Have a good game!''' 3718a603bfcba24969ed526d679dae1232da348f 169 168 2012-09-09T12:35:06Z Een 3 wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva ([http://www.coloradd.net/ ColorADD]). '''Have a good game!''' 4b8ed1d1192e2176b1da8b8aa75ef605b7c580d4 171 169 2012-09-12T19:55:55Z Een 3 wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva ([http://www.coloradd.net/code.asp ColorADD]). '''Have a good game!''' 612b122320e94857a200782521a758ad2c11d445 172 171 2012-09-12T20:00:14Z Een 3 wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. '''Have a good game!''' 34a5c561d3d6540c63bcd99833acc93d4ba5e571 174 172 2012-09-13T17:38:36Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] '''Have a good game!''' c1faf3ca99a6d1d9fedff47d69fd8f5b5f3a6f10 175 174 2012-09-13T17:46:08Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] <img alt="Synthesis panel" src="http://en.doc.boardgamearena.com/images/0/0b/ColorADD.jpg" /> '''Have a good game!''' 16f73ad1be3268a2aa7f75f33fc0f84e0fd90b8b 176 175 2012-09-13T17:49:20Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] '''Have a good game!''' c1faf3ca99a6d1d9fedff47d69fd8f5b5f3a6f10 179 176 2012-09-13T19:32:14Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] '''Have a good game!''' fa6b2c12165602be9a3d3f3d21a480c5460e4f6d 180 179 2012-09-13T19:32:32Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] '''Have a good game!''' def489ae3d57eb9d1faf5a66fbb586c277361faa 181 180 2012-09-13T19:33:10Z Een 3 /* Game preferences */ wikitext text/x-wiki == The game == Select '''adjacent colored tokens''' in order to pop them. Strategically pop colored tokens in order to finish the game with the most of your own secret color popped. White tokens can be used as '''any color'''. Win '''instantly''' by popping all of your secret colored tokens. You must pop '''all''' adjacent tokens of the same color. In case of a tie at the end of the game, it's the player who popped '''the less''' of the tokens matching his own secret color who wins. == Variants == '''Two secret colors''': this variant allows you to play Color Pop with two secret colors, which will have you thinking very often on which color you are gonna favor this turn! This variant is only available for two player games. NB : you can also '''play against the computer''' and try to win '''solo challenges''' on the [http://www.colorpop-online.com www.colorpop-online.com] website hosted by the game publisher, Gigamic. == Game preferences == The '''colorblind''' option available for this game enables an alternative setup displaying symbols on the tokens using the great color code designed by Miguel Neiva: [http://www.coloradd.net/code.asp ColorADD]. Learning the code is easy, just take a look at the following synthesis panel: [[File:ColorADD.jpg]] '''Have a good game!''' ee464ecfaa154f5d4bfc530f7fa81ec68dcbea69 Gamehelpcantstop 0 35 170 93 2012-09-10T02:58:19Z Wmlwmsh 1387 wikitext text/x-wiki Can't Stop is a very easy and fast game! '''How to play''' Roll 4 standard dice and then choose the sums of any 2 dice to advance your position on the board. You are allowed to use 3 temporary markers to track your progress in columns marked 2 through 12. These markers are commonly white or black. You can continue to roll the dice hoping to roll one of the previous combinations in the three columns selected this turn. When you think you've pushed your luck far enough you say "STOP" then pass the dice to the next player and replace the white markers with your own. If you roll the dice and find no useful combination you fail and your progress is lost. The more common numbers on 2d6 (6,7 and 8) have more steps in their paths while the less common combinations (2 and 12) have less. '''The object of the game is''' to reach and cover 3 peaks of these columns! 欲罷不能 如何進行遊戲 首先擲出四顆骰子,之後把四顆骰子兩兩分組配成可以搭配的任意數字(2~12),之後選擇其中一種配對執行。 執行時你可以擁有三個暫時的標記物可以作為前進的工具(此回合超過第三個就不能選該組合中的該項數值,但是其中一項可以前進即可選擇,另外一總組合則視同放棄) 重複以上動作直到你覺得這回合你前進已經夠了或是擲出你沒有辦法前進的骰子點數組合則該回合結束 若是自己喊出「夠了」則在現有的暫時標記物的位置換成自己的標記物輪下一人進行 若是因為擲出不能前進的骰子組合則是本回合前進的格數全部作廢依然換下一人進行回合 遊戲中使用的是兩個六面骰,依照組合的出現機率不同,在不同組合上要攻頂的需求步數也不同(例如7就需要最多格,因為他的出現率最高,相對的比較難出現的2.12就只需要短短的三格) 遊戲獲勝條件是其中有一人佔領了三條路線後則遊戲結束,由佔領三條路線的人獲勝 ea154f34371b9cb6ccc214ccbd3593b52dd35281 Fil:ColorADD.jpg 6 45 173 2012-09-13T17:36:42Z Een 3 ColorADD Synthesis Panel wikitext text/x-wiki ColorADD Synthesis Panel b91230a1bcd980ad210bfef7eda6568197448d37 177 173 2012-09-13T17:53:14Z Een 3 uploaded a new version of &quot;[[File:ColorADD.jpg]]&quot; wikitext text/x-wiki ColorADD Synthesis Panel b91230a1bcd980ad210bfef7eda6568197448d37 178 177 2012-09-13T17:55:55Z Een 3 uploaded a new version of &quot;[[File:ColorADD.jpg]]&quot; wikitext text/x-wiki ColorADD Synthesis Panel b91230a1bcd980ad210bfef7eda6568197448d37 Rating 0 16 182 107 2012-09-14T13:37:14Z Anthonyw 1416 /* How many points do I gain / lose for each game ? */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you lose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. ELO system on BGA has some specificity: * During your first 30 games, your ELO rating is more "elastic": you can win (or loose) more points at each game. This way, your ELO rating converge faster to you "natural" rating. * Original ELO rating system has been designed for 2 player games. For games with more than 2 players, BGA considers (for the ELO rating) that you win a 2-player game against each opponent after you (in game rank) and that you loose a 2-player game against each opponent before you (in game rank). * Games with more than 2 players last longer. For this reason, there's more points to win (or loose) in such games... as long as the number of players does not exceed the "advised number of players" for that game. == Okay, but I want to know the formula ! == The formula is exactly one's used by the ELO rating system, with the following adjustments: * At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * K=60 for the first 30 games, K=40 afterwards. * K is multiply by (N/2) for N-players games. If N exceed the "advised number of players" for this game, K is multiply by (A/2), where A is the "advised number of players". * If 2 players has a rating difference greater than 600, we consider that their ELO difference is 600. == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO ac5f5c52715ee05bbf2d34ef4e9b941c675c66ba 183 182 2012-09-14T13:38:46Z Anthonyw 1416 /* How is my ELO ranking computed ? */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you lose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you loose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. ELO system on BGA has some specificity: * During your first 30 games, your ELO rating is more "elastic": you can win (or lose) more points at each game. This way, your ELO rating converge faster to you "natural" rating. * Original ELO rating system has been designed for 2 player games. For games with more than 2 players, BGA considers (for the ELO rating) that you win a 2-player game against each opponent after you (in game rank) and that you lose a 2-player game against each opponent before you (in game rank). * Games with more than 2 players last longer. For this reason, there's more points to win (or lose) in such games... as long as the number of players does not exceed the "advised number of players" for that game. == Okay, but I want to know the formula ! == The formula is exactly one's used by the ELO rating system, with the following adjustments: * At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * K=60 for the first 30 games, K=40 afterwards. * K is multiply by (N/2) for N-players games. If N exceed the "advised number of players" for this game, K is multiply by (A/2), where A is the "advised number of players". * If 2 players has a rating difference greater than 600, we consider that their ELO difference is 600. == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 5b02a5186bab27aa010cb24915cd423d1d4d795c 184 183 2012-09-14T13:39:14Z Anthonyw 1416 /* Some advice */ wikitext text/x-wiki [[Category:Help]] == What is ELO rating ? == Your ELO rating for a game is your level at this game. It's a 4 digits number followed by sign http://fr.boardgamearena.com/theme/img/common/rank.png. Example: 1648 http://fr.boardgamearena.com/theme/img/common/rank.png. If you never play a game on BGA, your initial rating is 1500 . Each time you win a game your rating increases, and it decreases each time you lose a game. == How many points do I gain / lose for each game ? == ELO points gains / losses depend on the level of your opponents, and your rank at the end of the game. Some examples: * If you end the game at a better place than a player with a higher ELO, you gain a lot of points. * If you end the game at a better place than a player with a lower ELO, you gain less points. * If you end the game at a worse place than a player with a lower ELO, you lose a lot points. * And so on... == Some advice == * There's no use beating players a lot weaker than you (not many points to win). Try to find opponents of your level: it's both more fun and more good for your ELO. * The game rank is very important to calculate the ELO. This is the reason it is important to continue fighting for the second place during the game if you think you can't win. * The number of ELO points you can gain/lose during a game increases with the number of players. The maximum is reached when there is the "recommended number of players". Try to play games with this recommended number of players. * When you are the first player to quit a game in progress, you lose as many points as if you would finish the game at the last place, plus an additional penalty of 10 points. Even if you are in a difficult situation, your interest is to play the game until the end - or concede the victory to your opponent. == How is my ELO ranking computed ? == The BGA ELO system is directly based on the standard [http://en.wikipedia.org/wiki/Elo_rating_system ELO rating system], in use for chess. The ELO system main principle is the followin: the ELO points difference between 2 players determines the probability of each of them to win the encounter. If two players has the same ELO, their probability to win are 50/50. If one player has 400 more points than the other, his probability to win is 90%. ELO points gains and losses after each game tend to adjust ELO ratings of each player in order this principle is applied. ELO system on BGA has some specificity: * During your first 30 games, your ELO rating is more "elastic": you can win (or lose) more points at each game. This way, your ELO rating converge faster to you "natural" rating. * Original ELO rating system has been designed for 2 player games. For games with more than 2 players, BGA considers (for the ELO rating) that you win a 2-player game against each opponent after you (in game rank) and that you lose a 2-player game against each opponent before you (in game rank). * Games with more than 2 players last longer. For this reason, there's more points to win (or lose) in such games... as long as the number of players does not exceed the "advised number of players" for that game. == Okay, but I want to know the formula ! == The formula is exactly one's used by the ELO rating system, with the following adjustments: * At first, when someone left a game for any reason this game is not taken into account by the ELO rating system. * K=60 for the first 30 games, K=40 afterwards. * K is multiply by (N/2) for N-players games. If N exceed the "advised number of players" for this game, K is multiply by (A/2), where A is the "advised number of players". * If 2 players has a rating difference greater than 600, we consider that their ELO difference is 600. == Good players, Experts, Masters == * Good players: > 1600 ELO * Experts: > 1800 ELO * Masters: > 2000 ELO 29eee9580bc23d4a4b15f58a2c641902fc4e17bc The Boss 0 46 186 2012-10-08T03:20:42Z Surgeonufo 992 Created page with "Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden u..." wikitext text/x-wiki Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each play: 1) May place gangsters on a city; the large gangsters are returned at the end of each round, while the small ones are not. After placing the gangsters, you must have more of them than any opponent. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 2 turns. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. bf53f1c840b684fa8d44a92ff430b74457a9ad71 187 186 2012-10-08T03:30:16Z Surgeonufo 992 wikitext text/x-wiki Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city; the large gangsters are returned at the end of each round, while the small ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 2 turns. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 72e05d23ee671ebfc3e694b7701c429bd6adb695 188 187 2012-10-08T03:58:44Z Surgeonufo 992 wikitext text/x-wiki Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city; the large gangsters are returned at the end of each round, while the small ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 2 turns. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 0984ee8026d2b253a4505a17cc83008844ab701f 189 188 2012-10-10T00:35:14Z Surgeonufo 992 wikitext text/x-wiki Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city; the large gangsters are returned at the end of each round, while the small ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 1cd0608a6589ed0b110ea3d8a710fecfac78d2cd 194 189 2012-10-21T16:41:16Z Zkiller 1253 wikitext text/x-wiki Description == Headline text == Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 7218e79b6f4ffa499d10c3c79258f17d0df6cea1 195 194 2012-10-21T16:41:46Z Zkiller 1253 wikitext text/x-wiki Description Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 2d47a12f90977587d13ecf3b85fc415bb6a0e154 196 195 2012-10-21T16:42:15Z Zkiller 1253 wikitext text/x-wiki Description Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, flip over the police card. This will be the final round if there are 3 police symbols of the same color. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. c999bf38999a5f8e8cb1a90ca507e252c3b2823c 197 196 2012-10-21T16:50:12Z Zkiller 1253 wikitext text/x-wiki Description Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. bb04a8cb3402651b892b179ee2ebca895c2383a3 198 197 2012-10-21T16:56:52Z Zkiller 1253 wikitext text/x-wiki == Goal == Be the player with the most money at the end of the game. At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. == Description == Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 432dfa10f670d4f18e73cc081f9ca0c85fa6c5b2 199 198 2012-10-21T16:59:09Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game. == Description == Each city, except Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. CHICAGO: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. c19d7496df06f0519437e32618a00b0d1772c5bc 200 199 2012-10-21T17:01:57Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game. == Description == Each city, except Chicago*, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. Chicago* city: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. a6efd2dc5d10193fb18c67e46893ebc0795fe90f Development 0 47 190 2012-10-10T19:53:06Z Een 3 Created page with "== TODO ==" wikitext text/x-wiki == TODO == e1ac7bc92296781c3f0c5713f7149c6d5fe6804f Help 0 4 191 77 2012-10-11T00:52:25Z Surgeonufo 992 /* Games */ wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com Forums] are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailed help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] == Games == * [[Gamehelphaggis|Haggis]] * [[Gamehelpraceforthegalaxy|Race for the Galaxy]] * [[Gamehelpstoneage|Stone Age]] * [[Gamehelpdominion|Dominion]] * [[Gamehelpyearofthedragon|In the Year of the Dragon]] * [[Gamehelpcantstop|Can't Stop]] * [[Gamehelpkahuna|Kahuna]] * [[Gamehelpcoloretto|Coloretto]] * [[Gamehelphawaii|Hawaii]] * [[Gamehelptroyes|Troyes]] * [[Gamehelpgosu|Gosu]] * [[Gamehelppuertorico|Puerto Rico]] * [[Gamehelpamyitis|Amyitis]] * [[Gamehelptobago|Tobago]] * [[Gamehelpdragonheart|Dragonheart]] * [[Gamehelpchinagold|China Gold]] * [[Gamehelpunclechesnutstablegype|Uncle Chesnut's Table Gype]] * [[Gamehelptheboss]] 0174c39e1b6df9275ad2ba8f3ecaf2a6edaadb52 Gamehelpcoloretto 0 33 192 86 2012-10-12T06:06:20Z Texkill 1265 wikitext text/x-wiki While the regular game requires you to decide which piles to score positive/negative and where to place the jokers, this version automates that to give you the highest score possible. b9d4a44f0c124786a751dca5b76d3352df39041a Gamehelpraceforthegalaxy 0 41 193 143 2012-10-12T15:13:03Z Ksasaki 1566 wikitext text/x-wiki In Race for the Galaxy, players are competing civilizations exploring space, discovering planets to conquer or settle, building an economy by consuming a planet's goods, and building developments. The object of the game is to earn the most victory points from planets and developments played in their tableau, consuming goods, and bonuses from special developments. There are 5 phases to choose from: explore, develop, settle, consume, and produce. Players pick 1 phase per turn ( two phases in a 2 player game), then everyone plays only the chosen phases in phase order. Players that chose each phase get an extra benefit. At the end of each round players with more than 10 cards discard down to 10 cards and a new round begins. The game continues until one player plays 12 cards on their tableau or when the VP pool is exhausted. At the end of that round points are added up. The player with the most points is the winner! In case of a tie, the player with the most goods on the board plus cards in hand wins. You may drag a resource (single-coloured small card) to a consumption power to consume it. abca15cea5052494619b6d5f1d5ba12ae3d0805c The Boss 0 46 201 200 2012-10-21T17:03:05Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except *Chicago, has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. *Chicago: Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 68de3fcea9657fd8d02ccb5635c83e6c62065b91 202 201 2012-10-21T17:03:43Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 7d6daad93cb2c130391c731332e7aacde688aad8 203 202 2012-10-21T17:03:59Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. BEGINNER TIPS The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 7c6b37bc7ca7145555d5c1f1ade750f39b1a0a7f 204 203 2012-10-21T17:05:02Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == The cards for each city are listed at the bottom, so if you have 3 Boston cards or 2 Philly cards you know a lot about what those cities are likely to be. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. 2a2298bf5bd374e53398e5cfb1215e89d24d339b 205 204 2012-10-21T17:07:02Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 8fd168878a6d30bb8a84c55609644fcef118bdcc 206 205 2012-10-21T17:08:29Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 071d649f531f765999f2a75340a28612fb75676f 207 206 2012-10-21T17:09:08Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. b36f7ba25cf6739be80f8c65b37507f849d68230 208 207 2012-10-21T17:09:22Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. f89411ca7e04c9d264393ef1174ff70d77d55cc7 209 208 2012-10-21T17:09:50Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. ac01719485336c4476e486c5b66a0948146bb834 210 209 2012-10-21T17:13:33Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 15927b932ec12efb6e7c759531bd55c4c47aa256 211 210 2012-10-21T17:15:26Z Zkiller 1253 /* Description */ wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. === End === When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. fbb0032ad54b25bf8e79797d9caf16f06c92d337 212 211 2012-10-21T17:16:04Z Zkiller 1253 /* Description */ wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. === End === When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 8a2f3be62a5d4dfa60387a18b4294141548a054e 213 212 2012-10-21T17:16:57Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. === End === When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. ad560d07ee3da3a29fd361d5f71106e7d7da192c 214 213 2012-10-21T17:17:18Z Zkiller 1253 wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. === End === When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. be896aa3e963c564804a2ad2687dd5f142db909b 215 214 2012-10-21T17:18:18Z Zkiller 1253 /* Description */ wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 0ac56904907b213c1616a11bbaa9c40d0d45a0a2 216 215 2012-10-21T17:18:52Z Zkiller 1253 /* Description */ wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 216df9ddb16c37d4791196cf9503d42bd9c7b533 217 216 2012-10-21T18:32:21Z Zkiller 1253 moved [[Gamehelptheboss]] to [[The Boss]]: changing the temporary name wikitext text/x-wiki == Goal == At the end of the hand, the player with the most gangsters in the city wins the "city card" that was placed face down at the beginning of the hand. Be the player with the most money at the end of the game! == Description == Each city, except '''Chicago''', has one hidden card underneath it. The rest of the cards are distributed among the players, giving each player information on which card is hidden under each city. Each round, each player: 1) May place gangsters on a city. The large gangsters (Experts) are returned at the end of each round, while the small (Occasionalists) ones are not. After placing the gangsters, you must have more of them than any opponent on that city. 2) Must play a card from your hand, revealing that information about the city. When everybody has 2 cards in their hand, the police card is turned over. If there are 3 police symbols with the same color turned over, the game ends after the hand in progress is finished. When everybody is out of cards, reveal the face down cards. Whoever has the most gangsters on the city 'wins' that face down card. If it is money, it is worth that many points. If it is a gun one of your big gangsters is killed, the bars mean they go to jail for 2 rounds and the red cross sign is hospital for 1 turn. If you get the crossed out man card in Cincinnati you are banned from playing gangsters there the rest of the game. '''Chicago''' Chicago doesn't have a hidden card, instead it is worth one half (rounded down) of the sum of the last cards played from a player's hand on each of the cities to its left, it moves one space left each round. == Beginner Tips == *Give out useless information early and hold on to your gangsters until seeing what your opponents are planning. *If you have the gun for Detroit or Kansas City you KNOW that city will be worth some points. This isn't true for Philadelphia which could still send you to jail. 216df9ddb16c37d4791196cf9503d42bd9c7b533 Gamehelptheboss 0 48 218 2012-10-21T18:32:21Z Zkiller 1253 moved [[Gamehelptheboss]] to [[The Boss]]: changing the temporary name wikitext text/x-wiki #REDIRECT [[The Boss]] 525eb3913da3d347e1fc98bce9e9581c9311dde1 Help 0 4 219 191 2012-10-21T18:34:06Z Zkiller 1253 /* Games */ wikitext text/x-wiki An issue? A question? * [[Faq|Frequently asked questions]] could probably help you. * [http://forum.boardgamearena.com Forums] are also helpful to get information. == Help contents == * [[Faq|Frequently asked questions]] * [[About Board Game Arena]] ** [[About us]] ** [[Club Board Game Arena]] ** [[Contact us]] === Detailed help === * [[Getting started]] * [[Referral]] * [[Browser support]] * [[Moderation and grades]] * [[Game clock]] * [[Rating]] * [[Reputation]] * [[Translation guidelines]] == Games == * [[Gamehelphaggis|Haggis]] * [[Gamehelpraceforthegalaxy|Race for the Galaxy]] * [[Gamehelpstoneage|Stone Age]] * [[Gamehelpdominion|Dominion]] * [[Gamehelpyearofthedragon|In the Year of the Dragon]] * [[Gamehelpcantstop|Can't Stop]] * [[Gamehelpkahuna|Kahuna]] * [[Gamehelpcoloretto|Coloretto]] * [[Gamehelphawaii|Hawaii]] * [[Gamehelptroyes|Troyes]] * [[Gamehelpgosu|Gosu]] * [[Gamehelppuertorico|Puerto Rico]] * [[Gamehelpamyitis|Amyitis]] * [[Gamehelptobago|Tobago]] * [[Gamehelpdragonheart|Dragonheart]] * [[Gamehelpchinagold|China Gold]] * [[Gamehelpunclechesnutstablegype|Uncle Chesnut's Table Gype]] * [[Gamehelptheboss|The Boss]] c32d04b6feec5c8e94d0443e6936e954d3e3d428 Studio 0 49 220 2012-10-24T20:17:33Z Sourisdudesert 1 Created page with "'''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) S..." wikitext text/x-wiki '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 8bebe049b7e073dc301e36218d40bd9907ed708a 222 220 2012-10-24T20:24:57Z Sourisdudesert 1 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 2b9e8a86566104378c88ee21ca98a6dac0bf5b5c 223 222 2012-10-24T20:33:05Z Sourisdudesert 1 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == At first, check out these presentations: == BGA Studio documentation == f9da3165f2dbc6f8331cbf2a9e4e2c321388d1d4 224 223 2012-10-24T20:40:16Z Sourisdudesert 1 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] == BGA Studio documentation == e12da43129600f5b6278753f91665ff8dbfccc27 225 224 2012-10-24T20:42:01Z Sourisdudesert 1 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * The 8 steps to create a board game on Board Game Arena == BGA Studio documentation == 5a9d214a8612c2563cbaad4cb5d70f3b7b7141b4 226 225 2012-10-24T20:52:50Z Sourisdudesert 1 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] == BGA Studio documentation == (available soon...) 1bea11654a7ab6eb5b382657f96413c6797ba21e 228 226 2012-11-22T10:28:01Z Sourisdudesert 1 /* How to develop a board game on BGA Studio? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == (available soon...) a51c138b49e90fc4c1382cfe9ce0daf64b17678c Fil:Bga studio small.jpg 6 50 221 2012-10-24T20:24:25Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Gamehelpintheyearofthedragon 0 51 227 2012-11-18T22:32:20Z Salty-horse 1046 Add end-of-round and -game scoring reminders wikitext text/x-wiki === End-of-round Scoring === * 1 point for each palace. * 1 point For each court lady. * 1 point For each privilege. (Small privilege = 1 point; Large privilege = 2 points) === End-of-game Scoring === * 2 points for each person tile. * For each monk: score [number of Buddhas] x [number of floors] points. * 1 point for each 3 yuan. 094e726d8bed26a5b54c43e6aa40764bda2b5679 Gamehelphearts 0 52 229 2012-11-22T12:36:19Z Daleb147 1803 Created page with "Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving ..." wikitext text/x-wiki Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving you a hand of 13 cards. After looking at your cards, choose to pass to another player. The passing rotation is: (1st hand) to the player on your left, (2nd hand) to the player on your right, (3rd hand) to the player across the table, (4th hand) no passing. The rotation repeats until the game ends. '''Tricks''' After passing cards, the player holding the 2 of clubs leads the first trick. Each player must follow suit if possible. If you have no cards of the suit led, you may play a card of any suit. Exception: You may not play a heart or the Queen of Spades on the first trick, even if you have no clubs. The highest card of the suit led wins the trick. The winner of a trick starts the next trick. Hearts may not be led until a heart has been played (this is called "breaking" hearts). The Queen of Spades may be lead at any time. [NB: In traditional Hearts, playing the Queen of Spades also breaks hearts.] There is no trump suit. '''Scoring''' At the end of each hand, each heart taken by a player counts -1, and the Queen of Spades counts -13. If one player has taken all 13 hearts ''and'' the Queen of Spades (this is known as shooting the moon), that player scores 0 and all other players score -26. When one or more players reach zero, the game ends. The player with the highest score wins. '''Variants''' Normal game is 100 points. Quick game is 75 points. c028cf9094219edf61eff451dedac653ab7fd8f2 230 229 2012-11-22T12:38:14Z Daleb147 1803 wikitext text/x-wiki Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving you a hand of 13 cards. After looking at your cards, choose to pass to another player. The passing rotation is: (1st hand) to the player on your left, (2nd hand) to the player on your right, (3rd hand) to the player across the table, (4th hand) no passing. The rotation repeats until the game ends. '''Tricks''' After passing cards, the player holding the 2 of clubs leads the first trick. Each player must follow suit if possible. If you have no cards of the suit led, you may play a card of any suit. Exception: You may not play a heart or the Queen of Spades on the first trick, even if you have no clubs. The highest card of the suit led wins the trick. The winner of a trick starts the next trick. Hearts may not be led until a heart has been played (this is called "breaking" hearts). The Queen of Spades may be lead at any time. [NB: In traditional Hearts, playing the Queen of Spades also breaks hearts.] There is no trump suit. '''Scoring''' At the end of each hand, each heart taken by a player counts -1, and the Queen of Spades counts -13. If one player has taken all 13 hearts ''and'' the Queen of Spades (this is known as shooting the moon), that player scores 0 and all other players score -26. When one or more players reach zero, the game ends. The player with the highest score wins. '''Variants''' Normal game is 100 points. Quick game is 75 points. c8041d0b7782fad9106ef871a23dc9af7593637e 231 230 2012-11-22T12:39:33Z Daleb147 1803 wikitext text/x-wiki Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving you a hand of 13 cards. After looking at your hand, choose three cards to pass to another player. The passing rotation is: (1st hand) to the player on your left, (2nd hand) to the player on your right, (3rd hand) to the player across the table, (4th hand) no passing. The rotation repeats until the game ends. '''Tricks''' After passing cards, the player holding the 2 of clubs leads the first trick. Each player must follow suit if possible. If you have no cards of the suit led, you may play a card of any suit. Exception: You may not play a heart or the Queen of Spades on the first trick, even if you have no clubs. The highest card of the suit led wins the trick. The winner of a trick starts the next trick. Hearts may not be led until a heart has been played (this is called "breaking" hearts). The Queen of Spades may be lead at any time. [NB: In traditional Hearts, playing the Queen of Spades also breaks hearts.] There is no trump suit. '''Scoring''' At the end of each hand, each heart taken by a player counts -1, and the Queen of Spades counts -13. If one player has taken all 13 hearts ''and'' the Queen of Spades (this is known as shooting the moon), that player scores 0 and all other players score -26. When one or more players reach zero, the game ends. The player with the highest score wins. '''Variants''' Normal game is 100 points. Quick game is 75 points. 24db4367246faacd715235883032541395f40c23 234 231 2012-11-22T23:25:47Z Daleb147 1803 wikitext text/x-wiki Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving you a hand of 13 cards. After looking at your hand, choose three cards to pass to another player. The passing rotation is: (1st hand) to the player on your left, (2nd hand) to the player across the table, (3rd hand) to the player on your right, (4th hand) no passing. The rotation repeats until the game ends. '''Tricks''' After passing cards, the player holding the 2 of clubs leads the first trick. Each player must follow suit if possible. If you have no cards of the suit led, you may play a card of any suit. Exception: You may not play a heart or the Queen of Spades on the first trick, even if you have no clubs. The highest card of the suit led wins the trick. The winner of a trick starts the next trick. Hearts may not be led until a heart has been played (this is called "breaking" hearts). The Queen of Spades may be lead at any time. [NB: In traditional Hearts, playing the Queen of Spades also breaks hearts.] There is no trump suit. '''Scoring''' At the end of each hand, each heart taken by a player counts -1, and the Queen of Spades counts -13. If one player has taken all 13 hearts ''and'' the Queen of Spades (this is known as shooting the moon), that player scores 0 and all other players score -26. When one or more players reach zero, the game ends. The player with the highest score wins. '''Variants''' Normal game is 100 points. Quick game is 75 points. c134a170f6a54f64352aab39c6d476725b8c269f Development 0 47 232 190 2012-11-22T19:40:45Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == (available soon...) a51c138b49e90fc4c1382cfe9ce0daf64b17678c 233 232 2012-11-22T19:43:23Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === === What do I get? === === How should I start? === === Other ressources === FAQ Files reference Framework functions reference Development forum a26867be4e544f9a5579183b085ec9ad12fe79fe 235 233 2012-11-23T09:05:14Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is opened to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How to develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us|BGA contact address]. Please provide the following information: * developer's user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * developer's real name; * developer's email address; * developer's postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions document for developers on BGA Studio joined as an attachment. We also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Then, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login and complex password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initiated from our 'emptygame' template, providing the game structure (and comments! and examples!) Then you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === FAQ Files reference Framework functions reference Development forum bf764d6703bea2d63e7e6ca0e028982e48cd8292 236 235 2012-11-23T09:10:43Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * developer's user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * developer's real name; * developer's email address; * developer's postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions document for developers on BGA Studio joined as an attachment. We also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Then, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login and complex password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initiated from our 'emptygame' template, providing the game structure (and comments! and examples!) Then you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === [Development FAQ] [Development files reference] [Development framework functions reference] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 979e2f97593be050323fa3e481b8ba78467042da 237 236 2012-11-23T09:14:05Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your contact e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Then, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login and complex password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initiated from our 'emptygame' template, providing the game structure (and comments! and examples!) Then you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === [Development FAQ] [Development files reference] [Development framework functions reference] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 72bf370daa09b9f048a4b31e1b98a5506fa633e6 238 237 2012-11-23T09:15:00Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Then, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login and complex password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initiated from our 'emptygame' template, providing the game structure (and comments! and examples!) Then you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === [Development FAQ] [Development files reference] [Development framework functions reference] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] cf121fd0e36ab9d557973fb88647af87ee195063 239 238 2012-11-23T09:18:34Z Een 3 /* Ok, I registered, what do I get? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === [Development FAQ] [Development files reference] [Development framework functions reference] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] b6fda90a3132709481751181d2ce8aaff8f4862c 240 239 2012-11-23T09:21:31Z Een 3 /* Other ressources */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other ressources === [[Development FAQ]] [[Development files reference]] [[Development functions reference]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 2e858b45e252006334dcd72c76fca2988fe9cf4a 243 240 2012-11-23T09:52:04Z Een 3 /* Other ressources */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] e47246dabfa0a690d90e5b0629fd2cf3916767d5 248 243 2012-11-24T09:56:14Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 0c08a29e8f25782d85af7351110d1819061d46b3 249 248 2012-11-24T11:08:45Z Een 3 /* Other resources */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'ressources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 2653ee87c6344ebf07629f0b3f8249b5f53ad234 250 249 2012-11-24T11:12:59Z Een 3 /* Ok, I registered, what do I get? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: (TODO: link tutorials). Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 6a298e378936e884914ef321723c403658e558f1 Studio FAQ 0 53 241 2012-11-23T09:39:08Z Een 3 Created page with "This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Us..." wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. 245dd42acf9f030324bddb3016b307338c8f8fb1 242 241 2012-11-23T09:48:15Z Een 3 wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. b6678b288dddeacf8990a5fb7fb0afa71067c2fd Studio file reference 0 54 244 2012-11-23T10:53:17Z Een 3 Created page with " This is a quick reference for the files used to implement a game. For more information, edit the file and read the introductory comment. === 'img' directory === This direct..." wikitext text/x-wiki This is a quick reference for the files used to implement a game. For more information, edit the file and read the introductory comment. === 'img' directory === This directory contains the images for your game: * game_box.png is displayed on the main site on the game description page and when creating a table (280x280 px) * game_icon.png is the icon displayed in the lists of games and tables (50x50 px) * publisher.png is the logo of the publisher of the game, displayed on the game description page (width: 150 px) * and other images that you need. You should use [http://www.w3schools.com/css/css_image_sprites.asp CSS sprites] for better web performance. === dbmodel.sql === File for creating specific database tables that you will need to persist data during the game (for example a table for cards). === gameoptions.inc.php === File for describing your game options (= game variants) === <gamename>.action.php === File used to describe methods that can be called from the client interface through javascript, get parameters and call the appropriate game functions. === <gamename>.css === CSS styles specific to your game. === <gamename>.game.php === This is the main file for your game logic. Here you initialize the game, persist data, implement the rules and notify changes to the client interface. === <gamename>.js === This is the main file for your game interface. Here you will define: * which actions on the page will generate calls to the server * what happens when you get a notification for change from the server and how it will show in the browser. === <gamename>.view.php and <gamename>_<gamename>.tpl === Files used to set up the page layout ('view') for the game. === material.inc.php === File used to describe all the game material (cards with their description, dices, tokens...). You can also use it to define game constants. === states.inc.php === This file describes the states your game will iterate over, and the transitions to get from one state to another. === stats.inc.php === File used to list statistics that you want to update during the game to be presented to players at the end of the game. bb690d4d6d5bf813de7ac7ae7d19ade7323cecab Studio function reference 0 55 245 2012-11-23T11:00:23Z Een 3 Created page with "This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == ; todo ..." wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == ; todo : todo == Client side (Javascript functions) == ; todo : todo 533cc4280a0aee261ba9cca18e0a826f0de47487 Gamehelpdominion 0 29 246 76 2012-11-24T04:02:03Z Gelvo 1816 wikitext text/x-wiki '''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being depleted. '''Setup''' Each player starts the game with a deck of 10 cards (3 ''Estates'', and 7 ''Copper''). The deck is shuffled and 5 cards are drawn to form the player's hand. '''Overview''' The A-B-C rule makes it easy to remember the play order. On a player's turn: A: Action: The player may play an action card. Each player is allowed 1 action per turn by default. Certain action cards provide additional actions. B: Buy: After the action phase is over, the player may play buy a card from the general supply. Bought cards are placed in the player's discard pile. Each player is allowed 1 buy per turn by default. Certain action cards provide additional buys. C: Cleanup: After the buy phase is over, the player places all cards (played cards and in hand cards) into the discard pile. Five new cards are drawn from the player's deck. If there aren't enough cards to form a full hand, the discard pile is reshuffled and forms the new deck. The game progresses in clockwise order until ending conditions are met. '''Tie-breaker''' If 2 or more players have the same number of victory points, the player that had the fewest number of turns wins. If there is still a tie, all tied players rejoice in a shared victory. '''Learning About Each Card''' To learn about each card in Dominion you can go to [http://deckengine.info/dominion/] 199dbbce7742bec95e581d7c67e7d3e6aafed394 247 246 2012-11-24T04:03:28Z Gelvo 1816 wikitext text/x-wiki '''Goal''' Be the player with the most victory points at the end of the game. '''Ending Condition''' The ''Province'' stack being depleted, or 3 stacks of cards being depleted. '''Setup''' Each player starts the game with a deck of 10 cards (3 ''Estates'', and 7 ''Copper''). The deck is shuffled and 5 cards are drawn to form the player's hand. '''Overview''' The A-B-C rule makes it easy to remember the play order. On a player's turn: A: Action: The player may play an action card. Each player is allowed 1 action per turn by default. Certain action cards provide additional actions. B: Buy: After the action phase is over, the player may play buy a card from the general supply. Bought cards are placed in the player's discard pile. Each player is allowed 1 buy per turn by default. Certain action cards provide additional buys. C: Cleanup: After the buy phase is over, the player places all cards (played cards and in hand cards) into the discard pile. Five new cards are drawn from the player's deck. If there aren't enough cards to form a full hand, the discard pile is reshuffled and forms the new deck. The game progresses in clockwise order until ending conditions are met. '''Tie-breaker''' If 2 or more players have the same number of victory points, the player that had the fewest number of turns wins. If there is still a tie, all tied players rejoice in a shared victory. '''Learning About Each Card''' To learn about each card in Dominion you can go to Deck Engine[http://deckengine.info/dominion/] d8bee17613455731e1204adcab26ce10795c6d0b Studio back-office 0 56 251 2012-11-24T11:38:02Z Een 3 Created page with "You will find the URL to the Studio back-office in the 'resources.html' file at the root of your SFTP access. Here is a list and description of the links and functions in thi..." wikitext text/x-wiki You will find the URL to the Studio back-office in the 'resources.html' file at the root of your SFTP access. Here is a list and description of the links and functions in this back-office. Click on a menu to display its content. === Documentation === Contains links to this wiki, the development forum and the bugs forum. === Database === Contains a link to the Studio database administration tool (PHPMyAdmin). Your login / password for this tool is the same as for your SFTP access. === Sources === Contains a form for committing your sources to the BGA repository. Game name field should contain the name of your game (lower case, no space). Comment should contain your commit comment describing changes to the code since your last commit. You should commit from time to time when you hit some landmarks in your development. This is an extra assurance not to lose your code, and to have the possibility (by asking us) to get a previous version of your code if you need to backtrack. === Logs === Gives you a web based access to the studio server logs. ; Current table error log : main log of interest to you while developing, it contains the error logs happening at the table you are currently playing at ; Current table request logs : this log traces all the actions happening at the table you are currently playing at ; Javascript error log : this log traces all the Javascript errors happening on the client side. Errors are also briefly displayed in your browser, but in this log it's better formatted and you can look a it quietly. ; Gameserver error log : this log traces all errors happening on the gameserver. It should mainly be useful if your game setup crashes (ie before your table is ready, so before errors are collected in the current table error log), for example if there is a syntax error in your 'dbmodel.sql' file. ; HTTP error log : this log traces the web server errors. This is useful to look at PHP syntax errors and warnings. Please note that the three last logs are common to all games being developed on the platform, so there may be some noise in the data you are interested in. You can open the log links in a different tab and just hit F5 when you need to refresh. The URL you will get for the new tab has a "?n=100" parameter that gives the number of lines to display: you can modify it in the URL if you need more. a75366b91b41d11f5f611dee233b0deee2fc46c7 252 251 2012-11-24T11:41:09Z Een 3 wikitext text/x-wiki You will find the URL to the Studio back-office in the 'resources.html' file at the root of your SFTP access. Here is a list and description of the links and functions in this back-office. Click on a menu to display its content. === Documentation === Contains links to this wiki, the development forum and the bugs forum. === Database === Contains a link to the Studio database administration tool (PHPMyAdmin). Your login / password for this tool is the same as for your SFTP access. === Sources === Contains a form for committing your sources to the BGA repository. * Game name field should contain the name of your game (lower case, no space). * Comment field should contain your commit comment describing changes to the code since your last commit. You should commit from time to time when you hit some landmarks in your development. This is an extra assurance not to lose your code, and to have the possibility (by asking BGA administrators) to get a previous version of your code if you need to backtrack. === Logs === Gives you a web based access to the studio server logs. ; Current table error log : main log of interest to you while developing, it contains the error happening at the table you are currently playing at. ; Current table request logs : this log traces all the actions happening at the table you are currently playing at. ; Javascript error log : this log traces all the Javascript errors happening on the client side. Errors are also briefly displayed in your browser, but in this log it's better formatted and you can look a it quietly. ; Gameserver error log : this log traces all errors happening on the gameserver. It should mainly be useful if your game setup crashes (ie before your table is ready, so before errors are collected in the current table error log), for example if there is a syntax error in your 'dbmodel.sql' file. ; HTTP error log : this log traces the web server errors. This is useful to look at PHP syntax errors and warnings. Please note that the three last logs are common to all games being developed on the platform, so there may be some noise in the data you are interested in. You can open the log links in a different tab and just hit F5 when you need to refresh. The URL you will get for the new tab has a "?n=100" parameter that gives the number of lines to display: you can modify it in the URL if you need more. 5623b1560a6ae757eaa2f53c2494e6edda3eab19 Tutorial reversi 0 57 253 2012-11-24T13:03:49Z Sourisdudesert 1 Created page with "blabla" wikitext text/x-wiki blabla bb21158c733229347bd4e681891e213d94c685be 254 253 2012-11-24T13:09:13Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. c26a5af8e6828564ab4ee223d229dc54a9b9286d 255 254 2012-11-24T13:14:14Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == 1af09db09aef0c5098f0fa2a17b2ea9068a1de79 256 255 2012-11-24T13:15:59Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. So, let's upload our board. f60e6e9884c37a2e73df5b02b3666c9caa1f5154 258 256 2012-11-24T13:27:24Z Sourisdudesert 1 /* Let it look like Reversi */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a <div> for your board <nowiki> <div id="board"> </div> </nowiki> 664e12899137864d7e95e67481c51c9a053b8da9 259 258 2012-11-24T13:33:03Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <nowiki> <div id="board"> </div> </nowiki> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } b25c53195c653db74860f7375650536de492b023 261 259 2012-11-24T13:34:55Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <nowiki> <div id="board"> </div> </nowiki> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] 8bdac21920f65576aeff896481ae1b41e77998bf 262 261 2012-11-24T13:41:58Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> 2aa9b4055aa2b3b3bd8d72e989c3c0d2d8bf7541 263 262 2012-11-24T13:49:19Z Sourisdudesert 1 /* Make the squares appears */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. e8f724d68a8ff40cf5c1e30ee29a194a91df7e95 264 263 2012-11-24T13:50:24Z Sourisdudesert 1 /* Make the squares appears */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] 9f506bb9b9388809e70f528325323a3ea3820bdc 267 264 2012-11-24T13:57:41Z Sourisdudesert 1 wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Then, let's design some white&black disc tokens with a little bit of CSS d6c98d457f8c2baf69ddcb3ea2de8566b739ac7d 269 267 2012-11-24T14:00:05Z Sourisdudesert 1 /* The discs */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Then, let's design some white&black disc tokens with a little bit of CSS 45d86a617f0bcaabd8a2a2e713ff1ddf0d7b6828 270 269 2012-11-24T14:05:02Z Sourisdudesert 1 /* The discs */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "javascript template". aea59cd9a0d5a655a1bfc40de5928cb39c07cd42 271 270 2012-11-24T14:15:06Z Sourisdudesert 1 /* The discs */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. 61619f1af84c80d04243ea001a6082b77b3e6dac 272 271 2012-11-24T14:18:04Z Sourisdudesert 1 /* The discs */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] f476c6f09986a1589113b80bcde9b224e8b37e07 274 272 2012-11-24T14:22:59Z Sourisdudesert 1 /* The discs */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Note: of course we can't explain how d9c8d7a3f87db8034e553a1b158b1bdf75e7e4ea 275 274 2012-11-24T14:23:39Z Sourisdudesert 1 /* Introduction */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Note: of course we can't explain how 109fc90a2a4ccc1e28bfec0b718896f72258b878 276 275 2012-11-24T14:30:01Z Sourisdudesert 1 /* The database */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. == Setup the initial game position == Initially, there are 4 tokens on the board (2 white, 2 black). f3bd28bcc75748f33ef11ca30faa653345b6eba5 277 276 2012-11-24T14:38:27Z Sourisdudesert 1 /* Setup the initial game position */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. 5bd54f607111d419b76ae50aad1bee09b1fce065 278 277 2012-11-24T14:40:11Z Sourisdudesert 1 /* The database */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. 3740876f658f944737528e641e6352ddff6c27f6 280 278 2012-11-24T14:41:02Z Sourisdudesert 1 /* Setup the initial game position */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] 3baeffb6a7a725930a2c768e195a2650f5ae7750 282 280 2012-11-24T14:42:23Z Sourisdudesert 1 /* Setup the initial game position */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... b54d251dbf8e412c8a606c3625258999a7a14611 283 282 2012-11-24T14:43:09Z Sourisdudesert 1 /* The database */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... be60f242a3d7610172e71f72d90cdbd0119508ec 284 283 2012-11-24T14:47:37Z Sourisdudesert 1 /* Setup the initial game position */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] 26605e3dcebc2d859057134f2e4a955b9f084d7f 286 284 2012-11-24T14:49:10Z Sourisdudesert 1 /* The game state machine */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> 7f239e145406ed06bd3d5ea48e7abc90f39f58ee 287 286 2012-11-24T14:52:34Z Sourisdudesert 1 /* The game state machine */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture above, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] 45143c8f884d71113786b746e717385e427b1680 289 287 2012-11-24T15:07:07Z Sourisdudesert 1 /* The game state machine */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture above, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. 1d617cd8cd2e69715ffa9220f5d7e7c3070aadbc 290 289 2012-11-24T15:10:37Z Sourisdudesert 1 /* The rules */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture above, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed move == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above: 3c3e0f3dbdd3a75eea3c82143585d5912b6d1a4e 291 290 2012-11-24T15:10:55Z Sourisdudesert 1 /* The game state machine */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed move == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above: ebc5c345f749b004365eda4eef51ebbafd90d7c9 292 291 2012-11-24T15:18:41Z Sourisdudesert 1 /* Display allowed move */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] 1e8642b57da1bb69f6b242f3f05230046dbc9404 294 292 2012-11-24T15:30:07Z Sourisdudesert 1 /* Display allowed moves */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. 84b70487a17c62e442649e14de5f32556560912f 297 294 2012-11-25T10:24:14Z Sourisdudesert 1 /* Let's play */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> </pre> </pre> fd595cb9caea45c80ef81cdcf140310731e6d701 298 297 2012-11-25T10:30:46Z Sourisdudesert 1 /* Let's play */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> // Let's place a disc at x,y and return all "$returned" discs to the active player $sql = "UPDATE board SET board_player='$player_id' WHERE ( board_x, board_y) IN ( "; foreach( $turnedOverDiscs as $turnedOver ) { $sql .= "('".$turnedOver['x']."','".$turnedOver['y']."'),"; } $sql .= "('$x','$y') ) "; self::DbQuery( $sql ); </pre> ... we update the database to change the color of all turned over disc + the disc we just placed. <pre> // Update scores according to the number of disc on board $sql = "UPDATE player SET player_score = ( SELECT COUNT( board_x ) FROM board WHERE board_player=player_id )"; self::DbQuery( $sql ); // Statistics self::incStat( count( $turnedOverDiscs ), "turnedOver", $player_id ); if( ($x==1 && $y==1) || ($x==8 && $y==1) || ($x==1 && $y==8) || ($x==8 && $y==8) ) self::incStat( 1, 'discPlayedOnCorner', $player_id ); else if( $x==1 || $x==8 || $y==1 || $y==8 ) self::incStat( 1, 'discPlayedOnBorder', $player_id ); else if( $x>=3 && $x<=6 && $y>=3 && $y<=6 ) self::incStat( 1, 'discPlayedOnCenter', $player_id ); </pre> ... now, we update both player score by counting all disc, and we manage game statistics. <pre> // Notify self::notifyAllPlayers( "playDisc", clienttranslate( '${player_name} plays a disc and turns over ${returned_nbr} disc(s)' ), array( 'player_id' => $player_id, 'player_name' => self::getActivePlayerName(), 'returned_nbr' => count( $turnedOverDiscs ), 'x' => $x, 'y' => $y ) ); self::notifyAllPlayers( "turnOverDiscs", '', array( 'player_id' => $player_id, 'turnedOver' => $turnedOverDiscs ) ); $newScores = self::getCollectionFromDb( "SELECT player_id, player_score FROM player", true ); self::notifyAllPlayers( "newScores", "", array( "scores" => $newScores ) ); </pre> ... then we notify about all these changes. We are using for that 3 notifications ('playDisc', 'turnOverDiscs' and 'newScores' that we are going to implement on client side later). Note that the description of the 'playDisc' notification will be logged in the game log. <pre> // Then, go to the next state $this->gamestate->nextState( 'playDisc' ); } else throw new feException( "Impossible move" ); } </pre> ... finally, we jump to the next game state if everything goes fine ('playDisc' is also the name of a transition in the 'playerTurn' game state description above). Now 64278699265cc34b9bc9f92c7be45317d9301059 299 298 2012-11-25T10:34:51Z Sourisdudesert 1 /* Let's play */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> // Let's place a disc at x,y and return all "$returned" discs to the active player $sql = "UPDATE board SET board_player='$player_id' WHERE ( board_x, board_y) IN ( "; foreach( $turnedOverDiscs as $turnedOver ) { $sql .= "('".$turnedOver['x']."','".$turnedOver['y']."'),"; } $sql .= "('$x','$y') ) "; self::DbQuery( $sql ); </pre> ... we update the database to change the color of all turned over disc + the disc we just placed. <pre> // Update scores according to the number of disc on board $sql = "UPDATE player SET player_score = ( SELECT COUNT( board_x ) FROM board WHERE board_player=player_id )"; self::DbQuery( $sql ); // Statistics self::incStat( count( $turnedOverDiscs ), "turnedOver", $player_id ); if( ($x==1 && $y==1) || ($x==8 && $y==1) || ($x==1 && $y==8) || ($x==8 && $y==8) ) self::incStat( 1, 'discPlayedOnCorner', $player_id ); else if( $x==1 || $x==8 || $y==1 || $y==8 ) self::incStat( 1, 'discPlayedOnBorder', $player_id ); else if( $x>=3 && $x<=6 && $y>=3 && $y<=6 ) self::incStat( 1, 'discPlayedOnCenter', $player_id ); </pre> ... now, we update both player score by counting all disc, and we manage game statistics. <pre> // Notify self::notifyAllPlayers( "playDisc", clienttranslate( '${player_name} plays a disc and turns over ${returned_nbr} disc(s)' ), array( 'player_id' => $player_id, 'player_name' => self::getActivePlayerName(), 'returned_nbr' => count( $turnedOverDiscs ), 'x' => $x, 'y' => $y ) ); self::notifyAllPlayers( "turnOverDiscs", '', array( 'player_id' => $player_id, 'turnedOver' => $turnedOverDiscs ) ); $newScores = self::getCollectionFromDb( "SELECT player_id, player_score FROM player", true ); self::notifyAllPlayers( "newScores", "", array( "scores" => $newScores ) ); </pre> ... then we notify about all these changes. We are using for that 3 notifications ('playDisc', 'turnOverDiscs' and 'newScores' that we are going to implement on client side later). Note that the description of the 'playDisc' notification will be logged in the game log. <pre> // Then, go to the next state $this->gamestate->nextState( 'playDisc' ); } else throw new feException( "Impossible move" ); } </pre> ... finally, we jump to the next game state if everything goes fine ('playDisc' is also the name of a transition in the 'playerTurn' game state description above). A last thing to do on the server side is to active the next player when we enter in the "nextPlayer" game state: <pre> function stNextPlayer() { // Active next player $player_id = self::activeNextPlayer(); self::giveExtraTime( $player_id ); $this->gamestate->nextState( 'nextTurn' ); } </pre> Now, when we play a disc, the rules are checked and the disc appear in the database: [[File:reversi9.jpg]] 6101cdabac21b0201d459cc1468064208a53397e Fil:Board.jpg 6 58 257 2012-11-24T13:16:48Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi1.jpg 6 59 260 2012-11-24T13:34:17Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi2.jpg 6 60 265 2012-11-24T13:50:36Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 266 265 2012-11-24T13:50:59Z Sourisdudesert 1 uploaded a new version of &quot;[[File:Reversi2.jpg]]&quot; wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Tokens.png 6 61 268 2012-11-24T13:58:04Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi3.jpg 6 62 273 2012-11-24T14:18:16Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi4.jpg 6 63 279 2012-11-24T14:40:25Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi5.jpg 6 64 281 2012-11-24T14:41:52Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi6.jpg 6 65 285 2012-11-24T14:47:49Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi7.jpg 6 66 288 2012-11-24T14:53:29Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Fil:Reversi8.jpg.jpg 6 67 293 2012-11-24T15:18:51Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Development 0 47 295 250 2012-11-24T17:46:44Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick 'terms & conditions' document. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document (TODO: link pdf) as an attachment, and the sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] eecf066a299c4dc0c3a8e68add20e2673f238869 Studio FAQ 0 53 296 242 2012-11-24T18:17:21Z Een 3 wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. == Is there a quick way to access the database for my current table? == Yes! While playing a game on studio, you have a "go to database" link at the bottom of your game. This link will bring you directly to the database for the current table. c077ff8abbf540a10b8cb8c5557634d59d5d85ff Fil:Reversi9.jpg 6 68 300 2012-11-25T10:35:06Z Sourisdudesert 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Tutorial reversi 0 57 301 299 2012-11-25T10:37:05Z Sourisdudesert 1 /* Let's play */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> // Let's place a disc at x,y and return all "$returned" discs to the active player $sql = "UPDATE board SET board_player='$player_id' WHERE ( board_x, board_y) IN ( "; foreach( $turnedOverDiscs as $turnedOver ) { $sql .= "('".$turnedOver['x']."','".$turnedOver['y']."'),"; } $sql .= "('$x','$y') ) "; self::DbQuery( $sql ); </pre> ... we update the database to change the color of all turned over disc + the disc we just placed. <pre> // Update scores according to the number of disc on board $sql = "UPDATE player SET player_score = ( SELECT COUNT( board_x ) FROM board WHERE board_player=player_id )"; self::DbQuery( $sql ); // Statistics self::incStat( count( $turnedOverDiscs ), "turnedOver", $player_id ); if( ($x==1 && $y==1) || ($x==8 && $y==1) || ($x==1 && $y==8) || ($x==8 && $y==8) ) self::incStat( 1, 'discPlayedOnCorner', $player_id ); else if( $x==1 || $x==8 || $y==1 || $y==8 ) self::incStat( 1, 'discPlayedOnBorder', $player_id ); else if( $x>=3 && $x<=6 && $y>=3 && $y<=6 ) self::incStat( 1, 'discPlayedOnCenter', $player_id ); </pre> ... now, we update both player score by counting all disc, and we manage game statistics. <pre> // Notify self::notifyAllPlayers( "playDisc", clienttranslate( '${player_name} plays a disc and turns over ${returned_nbr} disc(s)' ), array( 'player_id' => $player_id, 'player_name' => self::getActivePlayerName(), 'returned_nbr' => count( $turnedOverDiscs ), 'x' => $x, 'y' => $y ) ); self::notifyAllPlayers( "turnOverDiscs", '', array( 'player_id' => $player_id, 'turnedOver' => $turnedOverDiscs ) ); $newScores = self::getCollectionFromDb( "SELECT player_id, player_score FROM player", true ); self::notifyAllPlayers( "newScores", "", array( "scores" => $newScores ) ); </pre> ... then we notify about all these changes. We are using for that 3 notifications ('playDisc', 'turnOverDiscs' and 'newScores' that we are going to implement on client side later). Note that the description of the 'playDisc' notification will be logged in the game log. <pre> // Then, go to the next state $this->gamestate->nextState( 'playDisc' ); } else throw new feException( "Impossible move" ); } </pre> ... finally, we jump to the next game state if everything goes fine ('playDisc' is also the name of a transition in the 'playerTurn' game state description above). A last thing to do on the server side is to active the next player when we enter in the "nextPlayer" game state: <pre> function stNextPlayer() { // Active next player $player_id = self::activeNextPlayer(); self::giveExtraTime( $player_id ); $this->gamestate->nextState( 'nextTurn' ); } </pre> Now, when we play a disc, the rules are checked and the disc appears in the database. [[File:reversi9.jpg]] Of course, as we don't manage notifications on client side, we need to press F5 after each move to see the changes on the board. == Make the move appears automatically == 4cd2519b3e4199201ca4dcc3b691f5ca772579af 322 301 2012-11-28T16:39:13Z Sourisdudesert 1 /* Make the move appears automatically */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> // Let's place a disc at x,y and return all "$returned" discs to the active player $sql = "UPDATE board SET board_player='$player_id' WHERE ( board_x, board_y) IN ( "; foreach( $turnedOverDiscs as $turnedOver ) { $sql .= "('".$turnedOver['x']."','".$turnedOver['y']."'),"; } $sql .= "('$x','$y') ) "; self::DbQuery( $sql ); </pre> ... we update the database to change the color of all turned over disc + the disc we just placed. <pre> // Update scores according to the number of disc on board $sql = "UPDATE player SET player_score = ( SELECT COUNT( board_x ) FROM board WHERE board_player=player_id )"; self::DbQuery( $sql ); // Statistics self::incStat( count( $turnedOverDiscs ), "turnedOver", $player_id ); if( ($x==1 && $y==1) || ($x==8 && $y==1) || ($x==1 && $y==8) || ($x==8 && $y==8) ) self::incStat( 1, 'discPlayedOnCorner', $player_id ); else if( $x==1 || $x==8 || $y==1 || $y==8 ) self::incStat( 1, 'discPlayedOnBorder', $player_id ); else if( $x>=3 && $x<=6 && $y>=3 && $y<=6 ) self::incStat( 1, 'discPlayedOnCenter', $player_id ); </pre> ... now, we update both player score by counting all disc, and we manage game statistics. <pre> // Notify self::notifyAllPlayers( "playDisc", clienttranslate( '${player_name} plays a disc and turns over ${returned_nbr} disc(s)' ), array( 'player_id' => $player_id, 'player_name' => self::getActivePlayerName(), 'returned_nbr' => count( $turnedOverDiscs ), 'x' => $x, 'y' => $y ) ); self::notifyAllPlayers( "turnOverDiscs", '', array( 'player_id' => $player_id, 'turnedOver' => $turnedOverDiscs ) ); $newScores = self::getCollectionFromDb( "SELECT player_id, player_score FROM player", true ); self::notifyAllPlayers( "newScores", "", array( "scores" => $newScores ) ); </pre> ... then we notify about all these changes. We are using for that 3 notifications ('playDisc', 'turnOverDiscs' and 'newScores' that we are going to implement on client side later). Note that the description of the 'playDisc' notification will be logged in the game log. <pre> // Then, go to the next state $this->gamestate->nextState( 'playDisc' ); } else throw new feException( "Impossible move" ); } </pre> ... finally, we jump to the next game state if everything goes fine ('playDisc' is also the name of a transition in the 'playerTurn' game state description above). A last thing to do on the server side is to active the next player when we enter in the "nextPlayer" game state: <pre> function stNextPlayer() { // Active next player $player_id = self::activeNextPlayer(); self::giveExtraTime( $player_id ); $this->gamestate->nextState( 'nextTurn' ); } </pre> Now, when we play a disc, the rules are checked and the disc appears in the database. [[File:reversi9.jpg]] Of course, as we don't manage notifications on client side, we need to press F5 after each move to see the changes on the board. == Make the move appears automatically == Now, what we have to do is process the notifications sent by the server and make the move appear on the interface. In our "setupNotifications" method, we register 2 methods for the 2 notifications we created at the previous step ('playDisc' and 'turnOverDiscs'): <pre> dojo.subscribe( 'playDisc', this, "notif_playDisc" ); this.notifqueue.setSynchronous( 'playDisc', 500 ); dojo.subscribe( 'turnOverDiscs', this, "notif_turnOverDiscs" ); this.notifqueue.setSynchronous( 'turnOverDiscs', 1500 ); </pre> As you can see, we associate our 2 notifications with 2 methods with the "notif_" prefix. At the same time, we define these notifications as "synchronous", with a duration in millisecond (500 for the first one, and 1500 for the second one). It tells the user interface to wait some time after executing the notification, to let the animation end before starting the next notification. In our specific case, the animation will be the following: * Make a disc slide from the player panel to its place on the board * (wait 500ms) * Make all turned over discs blink (and of course turned them over) * (wait 1500ms) * Let the next player play. Let's have a look now on the "playDisc" notification handler method: <pre> notif_playDisc: function( notif ) { // Remove current possible moves (makes the board more clear) dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); this.addDiscOnBoard( notif.args.x, notif.args.y, notif.args.player_id ); }, </pre> No surprise here, we re-used some existing stuff to: * Remove the highlighted squares. * Add a new disc on board, coming from player panel. Now, here's the method that handle the turnOverDiscs notification: <pre> notif_turnOverDiscs: function( notif ) { // Get the color of the player who is returning the discs var targetColor = this.gamedatas.players[ notif.args.player_id ].color; // Made these discs blinking and set them to the specified color for( var i in notif.args.turnedOver ) { var disc = notif.args.turnedOver[ i ]; // Make the disc blink 2 times var anim = dojo.fx.chain( [ dojo.fadeOut( { node: 'disc_'+disc.x+''+disc.y } ), dojo.fadeIn( { node: 'disc_'+disc.x+''+disc.y } ), dojo.fadeOut( { node: 'disc_'+disc.x+''+disc.y, onEnd: function( node ) { // Remove any color class dojo.removeClass( node, [ 'disccolor_000000', 'disccolor_ffffff' ] ); // ... and add the good one dojo.addClass( node, 'disccolor_'+targetColor ); } } ), dojo.fadeIn( { node: 'disc_'+disc.x+''+disc.y } ) ] ); // end of dojo.fx.chain // ... and launch the animation anim.play(); } }, </pre> 03d8de1fa331667d24bce827ab6b49abd375f329 323 322 2012-11-28T16:43:41Z Sourisdudesert 1 /* Make the move appears automatically */ wikitext text/x-wiki == Introduction == Using this tutorial, you can build a complete working game on BGA environment: Reversi game. Before reading this tutorial, you must: * Read the overall presentations of the BGA Framework ([[Studio|see here]]). * Know the [http://en.wikipedia.org/wiki/Reversi#Rules rules of Reversi]. * Know the languages used on BGA: PHP, SQL, HTML, CSS, Javascript. == Create your first game == With the initial skeleton of code provided initially, you can already start a game from the BGA Studio. For now, we are going to work with 1 player only. Most of the time this is simpler to proceed with only one player during the early phase of development of your game, as it's easy and fast to start/stop games. Thus, you can start a "Reversi" game, and arrive on a void, empty game. Yeah. == Let it look like Reversi == It is always a good idea to start with a little bit of graphic work. Why? Because this helps to figure out how the final game will be, and issues that may appear later. Be careful during designing the layout of your game: you must always keep in mind that players with a 1024px screen width must be able to play. Usually, it means that the width of the play area can be 750px (in the worst case). For Reversi, it's useless to have a 750x750px board - much too big, so we choose this one which fit perfectly (536x528): [[File:Board.jpg]] Note that we are using a jpg file. Jpg are lighter than png, then faster to load. Later we are going to use PNGs for discs for transparency purpose. Now, let's make it appears on our game: * upload board.jpg in your "img/" directory. * edit "reversi_reversi.tpl" to add a 'div' for your board: <pre> <div id="board"> </div> </pre> * edit your reversi.css file to transform it into a visible board: #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); } Refresh your page. Here's your board: [[File:reversi1.jpg]] == Make the squares appears == Now, what we need is to create some invisible HTML elements when squares are. These elements will be used as position references for width&black discs. Obviously, we need 64 squares. To avoid writing 64 'div' elements on our template, we are going to use the "block" feature. Let's modify our template like this: <pre> <div id="board"> <!-- BEGIN square --> <div id="square_{X}_{Y}" class="square" style="left: {LEFT}px; top: {TOP}px;"></div> <!-- END square --> </div> </pre> As you can see, we created a "square" block, with 4 variable elements: X, Y, LEFT and TOP. Obviously, we are going to use this block 64 times during page load. Let's do it in our "reversi.view.php" file: <pre> $this->page->begin_block( "reversi_reversi", "square" ); $hor_scale = 64.8; $ver_scale = 64.4; for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $this->page->insert_block( "square", array( 'X' => $x, 'Y' => $y, 'LEFT' => round( ($x-1)*$hor_scale+10 ), 'TOP' => round( ($y-1)*$ver_scale+7 ) ) ); } } </pre> Note: as you can see, squares in our "board.jpg" files does not have an exact width/height in pixel, and that's the reason we are using floating point numbers here. Now, to finish our work and check if everything works fine, we are going to style our square a little bit in our CSS stylesheet: <pre> #board { width: 536px; height: 528px; background-image: url('../../img/reversi/board.jpg'); position: relative; } .square { width: 56px; height: 56px; position: absolute; background-color: red; } </pre> Explanations: * With "position: relative" on board, we ensure square elements are positioned relatively to board. * For the test, we use a red background color for the square. This is a useful tip to figure out if everything is fine with invisible elements. Let's refresh and check our our (beautiful) squares: [[File:reversi2.jpg]] == The discs == Now, our board is ready to receive some disc tokens! At first, we introduce a new 'div' element as a child of "board" to host all these tokens (in our template): <pre> <!-- END square --> <div id="tokens"> </div> </div> </pre> Then, let's introduce a new piece of art with the discs. We need some transparency here so we are using a png file: [[File:tokens.png]] Important: we are using ONE file for both discs. It's really important that you use a minimum number of graphic files for your game with this "CSS sprite" technique, because it makes the game loading faster and more reliable. [http://www.w3schools.com/css/css_image_sprites.asp Read more about CSS sprites]. Now, let's separate the disc with some CSS stuff: <pre> .token { width: 56px; height: 56px; position: absolute; background-image: url('../../img/reversi/tokens.png'); } .tokencolor_ffffff { background-position: 0px 0px; } .tokencolor_000000 { background-position: -56px 0px; } </pre> With this CSS code, is we apply the classes "token" and "tokencolor_ffffff" to a div element, we got a white token. Yeah. Note the "position: absolute" which allow us to position tokens on the board and make them "slide" to their positions. Now, let's make a first token appears on our board. Disc tokens are not visible at the beginning of the game: they appear dynamically during the game. For this reason, we are going to make them appear from our Javascript code, with a BGA Framework technique called "JS template". In our template file (reversi_reversi.tpl), let's create the piece of HTML needed to display our token: <pre> <script type="text/javascript"> // Templates var jstpl_disc='<div class="disc disccolor_${color}" id="disc_${xy}"></div>'; </script> </pre> Note: we already created the "templates" section for you in the game skeleton. As you can see, we defined a JS template named "jstpl_disc" with a piece of HTML and two variables: the color of the token and its x/y coordinates. Note that the syntax of the argument is different for template block variables (brackets) and JS template variables (dollar and brackets). Now, let's create a method in our Javascript code that will make a token appear on the board, using this template: <pre> addTokenOnBoard: function( x, y, player ) { dojo.place( this.format_block( 'jstpl_token', { xy: x+''+y, color: this.gamedatas.players[ player ].color } ) , 'tokens' ); this.placeOnObject( 'token_'+x+''+y, 'overall_player_board_'+player ); this.slideToObject( 'token_'+x+''+y, 'square_'+x+'_'+y ).play(); }, </pre> At first, with "dojo.place" and "this.format_block" methods, we create a HTML piece of code and insert it as a new child of "tokens" div element. Then, with BGA "this.placeOnObject" method, we place this element over the panel of some player. Immediately after, using BGA "this.slidetoObject" method, we make the disc slide to the "square" element, its final destination. Note: don't forget to call the "play()", otherwise the token remains at its original location. Note: note that during all the process, the parent of the new disc HTML element will remain "tokens". placeOnObject and slideToObject methods are only moving the position of elements on screen, and they are not modifying the HTML tree. Now, to test if everything works fine, just call "addTokenOnBoard( 2, 2, <your_player_id> )" in your "setup" Javascript method, and reload the page. A token should appear and slide immediately to its position, like this: [[File:reversi3.jpg]] == The database == We did most of the client-side programming, so let's have a look on the other side now. To design the database model of our game, the best thing to do is to follow the "Go to game database" link at the bottom of our game, to access the database directly with a [http://www.phpmyadmin.net/ PhpMyAdmin] instance. Then, you can create the tables you need for your table (do not remove existing tables!), and report every SQL command used in your "dbmodel.sql" file. [[File:reversi4.jpg]] The database model of Reversi is very simple: just one table with the squares of the board. In our dbmodel.sql, we have this: <pre> CREATE TABLE IF NOT EXISTS `board` ( `board_x` smallint(5) unsigned NOT NULL, `board_y` smallint(5) unsigned NOT NULL, `board_player` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`board_x`,`board_y`) ) ENGINE=InnoDB; </pre> Now, a new database with a "board" table will be created each time we start a Reversi game. This is why after modifying our dbmodel.sql it's a good time to stop & start again our game. == Setup the initial game position == The "setupNewGame" method of our reversi.game.php is called during initial setup: this is the place to initialize our data and to place the initial tokens on the board (initially, there are 4 tokens on the board). Let's do this: <pre> // Init the board $sql = "INSERT INTO board (board_x,board_y,board_player) VALUES "; $sql_values = array(); for( $x=1; $x<=8; $x++ ) { for( $y=1; $y<=8; $y++ ) { $token_value = "NULL"; if( ($x==4 && $y==4) || ($x==5 && $y==5) ) // Initial positions of white player $token_value = "'$whiteplayer_id'"; else if( ($x==4 && $y==5) || ($x==5 && $y==4) ) // Initial positions of black player $token_value = "'$blackplayer_id'"; $sql_values[] = "('$x','$y',$token_value)"; } } $sql .= implode( $sql_values, ',' ); self::DbQuery( $sql ); // Active first player self::activeNextPlayer(); </pre> As you can see, we create one database entry for each square, with a "NULL" value which mean "empty square". Of course, for 4 specific squares, we place an initial token. At the end, we active the first player to make it active at the beginning of the game. Now, we need to make these tokens appears on the client side. To achieve this, the first step is to return the token positions with our "getAllDatas" PHP method (called during each page reload): <pre> // Get reversi board token $result['board'] = self::getObjectListFromDB( "SELECT board_x x, board_y y, board_player player FROM board WHERE board_player IS NOT NULL" ); </pre> As you can see, we are using the BGA framework "getObjectListFromDB" method that format the result of this SQL query in a PHP array with x, y and player attribute. The last thing we need to do is to process this array on client side, and place a disc token on the board for each array item. Of course, we are doing this is our Javascript "setup" method: <pre> for( var i in gamedatas.board ) { var square = gamedatas.board[i]; if( square.player !== null ) { this.addTokenOnBoard( square.x, square.y, square.player ); } } </pre> As you can see, our "board" entry created in "getAllDatas" can be used here as "gamedatas.board" in our Javascript. We are using our previously developed "addTokenOnBoard" method. Reload... and here we are: [[File:reversi5.jpg]] It starts to smell Reversi here... == The game state machine == Now, let's stop our game again, because we are going to start the core game logic. You already read the "Focus on BGA game state machine", so you know that this is the heart of your game logic. For reversi game, it's very simple although. Here's a diagram of our game state machine for Reversi: [[File:reversi6.jpg]] And here's our "stats.inc.php", according to this diagram: <pre> $machinestates = array( 1 => array( "name" => "gameSetup", "description" => clienttranslate("Game setup"), "type" => "manager", "action" => "stGameSetup", "transitions" => array( "" => 10 ) ), 10 => array( "name" => "playerTurn", "description" => clienttranslate('${actplayer} must play a disc'), "descriptionmyturn" => clienttranslate('${you} must play a disc'), "type" => "activeplayer", "args" => "argPlayerTurn", "possibleactions" => array( 'playDisc' ), "transitions" => array( "playDisc" => 11, "zombiePass" => 11 ) ), 11 => array( "name" => "nextPlayer", "type" => "game", "action" => "stNextPlayer", "updateGameProgression" => true, "transitions" => array( "nextTurn" => 10, "cantPlay" => 11, "endGame" => 99 ) ), 99 => array( "name" => "gameEnd", "description" => clienttranslate("End of game"), "type" => "manager", "action" => "stGameEnd", "args" => "argGameEnd" ) ); </pre> Now, let's create in our reversi.game.php file the methods that are declared in this game states description file: * argPlayerTurn * stNextPlayer ... and start a new Reversi game. As you can see on the screen capture below, the BGA framework makes the game jump to our first game state "playerTurn" right after the initial setup. That's why the status bar contains the description of playerTurn state ("XXXX must play a disc"): [[File:reversi7.jpg]] == The rules == Now, what we would like to do is to indicate to the current player where it is allowed to play. The idea is to build a "getPossibleMoves" PHP method that return a list of coordinates where it is allowed to play. This method will be used in particular: * As we just said, to help the player to see where he can play. * When the player play, to check if he has the right to play here. This is pure PHP programming here, and there's no special things from the BGA framework that can be used. This is why we won't go into details here. The overall idea is: * Create a "getTurnedOverDiscs(x,y)" method that return coordinates of discs that would be turned over if a token would be played at x,y. * Loop through all free squares of the board, call the "getTurnedOverDiscs" method on each of them. If at least 1 token is turned over, this is a valid move. One important thing to keep in mind is the following: making a database query is slow, so please don't load the entire game board with a SQL query multiple time. In our implementation, we load the entire board once at the beginning of "getPossibleMoves", and then pass the board as an argument to all methods. If you want to look into details, please look at the "utility method" sections of reversi.game.php. == Display allowed moves == Now, what we want to do is highlight squares where player can place a disc. To do this, we are using the "argPlayerTurn" method. This method is called each time we enter into "playerTurn" game state, and its result is transfered automatically to the client-side: <pre> function argPlayerTurn() { return array( 'possibleMoves' => self::getPossibleMoves( self::getActivePlayerId() ) ); } </pre> We are of course using the "getPossibleMoves" method we just developed. Now, let's go to the client side to use the data returned by the method above. We are using the "onEnteringState" Javascript method that is called each time we enter into a new game state: <pre> onEnteringState: function( stateName, args ) { console.log( 'Entering state: '+stateName ); switch( stateName ) { case 'playerTurn': this.updatePossibleMoves( args.args.possibleMoves ); break; } }, </pre> So, when we are entering into "playerTurn" game state, we are calling our "updatePossibleMoves" method. This method looks like this: <pre> updatePossibleMoves: function( possibleMoves ) { // Remove current possible moves dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); for( var x in possibleMoves ) { for( var y in possibleMoves[ x ] ) { // x,y is a possible move dojo.addClass( 'square_'+x+'_'+y, 'possibleMove' ); } } this.addTooltipToClass( 'possibleMove', '', _('Place a disc here') ); }, </pre> The idea here is that we've created a CSS class ("possibleMove") that can be applied to a "square" element to highlight it. At first, we remove all "possibleMove" classes currently applied with the very useful combination of "dojo.query" and "removeClass" method. Then we loop through all possible moves that our PHP "updatePossibleMoves" create for us, and add the "possibleMove" class to corresponding square. Finally, we use BGA framework "addTooltipToClass" method to associate a tooltip to all these highlighted squares in order players can understand the meaning of this. And here we are: [[File:reversi8.jpg.jpg]] == Let's play == From now, it's better to restart a game with 2 players, because we are going to implement a complete Reversi turn. The summary of what we are going to do is: * When we click on a "possibleMove" square, send the move to the server. * On server side, check the move is correct, apply Reversi rules and jump to next player. * On client side, change the disc position to reflect the move. Thus, what we do first is associate each click on a square to one of our method. We are doing this in our Javascript "setup" method: <pre> dojo.query( '.square' ).connect( 'onclick', this, 'onPlayDisc' ); </pre> Note the use of the "dojo.query" method to get all HTML elements with "square" class in just one function call. Now, our "onPlayDisc" method is called each time someone click on a square. Here's our "onPlayDisc" method below: <pre> onPlayDisc: function( evt ) { // Stop this event propagation dojo.stopEvent( evt ); // Get the cliqued square x and y // Note: square id format is "square_X_Y" var coords = evt.currentTarget.id.split('_'); var x = coords[1]; var y = coords[2]; if( ! dojo.hasClass( 'square_'+x+'_'+y, 'possibleMove' ) ) { // This is not a possible move => the click does nothing return ; } if( this.checkAction( 'playDisc' ) ) // Check that this action is possible at this moment { this.ajaxcall( "/reversi/reversi/playDisc.html", { x:x, y:y }, this, function( result ) {} ); } }, </pre> What we do here is: * We stop the propagation of the Javascript "onclick" event. Otherwise, it can lead to random behavior so it always a good idea. * We get the x/y coordinates of the square by using "evt.currentTarget.id". * We check that clicked square has the "possibleMove" class, otherwise we know for sure that we can't play there. * We check that "playDisc" action is possible, according to current game state (see "possibleactions" entry in our "playerTurn" game state defined above). This check is important to avoid issues if a player double clicks on a square. * Finally, we make a call to the server using BGA "ajaxcall" method with argument x and y. Now, we have to manage this "playDisc" action on server side. At first, we introduce a "playDisc" entry point in our "reversi.action.php": <pre> public function playDisc() { self::setAjaxMode(); $x = self::getArg( "x", AT_posint, true ); $y = self::getArg( "y", AT_posint, true ); $result = $this->game->playDisc( $x, $y ); self::ajaxResponse( ); } </pre> As you can see, we get the 2 arguments x and y from the javascript call, and call a corresponding "playDisc" method in our game logic. Now, let's have a look of this playDisc method: <pre> function playDisc( $x, $y ) { // Check that this player is active and that this action is possible at this moment self::checkAction( 'playDisc' ); </pre> ... at first, we check that this action is possible according to current game state (see "possible action"). We already did it on client side, but it's important to do it on server side too (otherwise it would be possible to cheat). <pre> // Now, check if this is a possible move $board = self::getBoard(); $turnedOverDiscs = self::getTurnedOverDiscs( $x, $y, $player_id, $board ); if( count( $turnedOverDiscs ) > 0 ) { // This move is possible! </pre> ...now, we are using the "getTurnedOverDiscs" method again to check that this move is possible. <pre> // Let's place a disc at x,y and return all "$returned" discs to the active player $sql = "UPDATE board SET board_player='$player_id' WHERE ( board_x, board_y) IN ( "; foreach( $turnedOverDiscs as $turnedOver ) { $sql .= "('".$turnedOver['x']."','".$turnedOver['y']."'),"; } $sql .= "('$x','$y') ) "; self::DbQuery( $sql ); </pre> ... we update the database to change the color of all turned over disc + the disc we just placed. <pre> // Update scores according to the number of disc on board $sql = "UPDATE player SET player_score = ( SELECT COUNT( board_x ) FROM board WHERE board_player=player_id )"; self::DbQuery( $sql ); // Statistics self::incStat( count( $turnedOverDiscs ), "turnedOver", $player_id ); if( ($x==1 && $y==1) || ($x==8 && $y==1) || ($x==1 && $y==8) || ($x==8 && $y==8) ) self::incStat( 1, 'discPlayedOnCorner', $player_id ); else if( $x==1 || $x==8 || $y==1 || $y==8 ) self::incStat( 1, 'discPlayedOnBorder', $player_id ); else if( $x>=3 && $x<=6 && $y>=3 && $y<=6 ) self::incStat( 1, 'discPlayedOnCenter', $player_id ); </pre> ... now, we update both player score by counting all disc, and we manage game statistics. <pre> // Notify self::notifyAllPlayers( "playDisc", clienttranslate( '${player_name} plays a disc and turns over ${returned_nbr} disc(s)' ), array( 'player_id' => $player_id, 'player_name' => self::getActivePlayerName(), 'returned_nbr' => count( $turnedOverDiscs ), 'x' => $x, 'y' => $y ) ); self::notifyAllPlayers( "turnOverDiscs", '', array( 'player_id' => $player_id, 'turnedOver' => $turnedOverDiscs ) ); $newScores = self::getCollectionFromDb( "SELECT player_id, player_score FROM player", true ); self::notifyAllPlayers( "newScores", "", array( "scores" => $newScores ) ); </pre> ... then we notify about all these changes. We are using for that 3 notifications ('playDisc', 'turnOverDiscs' and 'newScores' that we are going to implement on client side later). Note that the description of the 'playDisc' notification will be logged in the game log. <pre> // Then, go to the next state $this->gamestate->nextState( 'playDisc' ); } else throw new feException( "Impossible move" ); } </pre> ... finally, we jump to the next game state if everything goes fine ('playDisc' is also the name of a transition in the 'playerTurn' game state description above). A last thing to do on the server side is to active the next player when we enter in the "nextPlayer" game state: <pre> function stNextPlayer() { // Active next player $player_id = self::activeNextPlayer(); self::giveExtraTime( $player_id ); $this->gamestate->nextState( 'nextTurn' ); } </pre> Now, when we play a disc, the rules are checked and the disc appears in the database. [[File:reversi9.jpg]] Of course, as we don't manage notifications on client side, we need to press F5 after each move to see the changes on the board. == Make the move appears automatically == Now, what we have to do is process the notifications sent by the server and make the move appear on the interface. In our "setupNotifications" method, we register 2 methods for the 2 notifications we created at the previous step ('playDisc' and 'turnOverDiscs'): <pre> dojo.subscribe( 'playDisc', this, "notif_playDisc" ); this.notifqueue.setSynchronous( 'playDisc', 500 ); dojo.subscribe( 'turnOverDiscs', this, "notif_turnOverDiscs" ); this.notifqueue.setSynchronous( 'turnOverDiscs', 1500 ); </pre> As you can see, we associate our 2 notifications with 2 methods with the "notif_" prefix. At the same time, we define these notifications as "synchronous", with a duration in millisecond (500 for the first one, and 1500 for the second one). It tells the user interface to wait some time after executing the notification, to let the animation end before starting the next notification. In our specific case, the animation will be the following: * Make a disc slide from the player panel to its place on the board * (wait 500ms) * Make all turned over discs blink (and of course turned them over) * (wait 1500ms) * Let the next player play. Let's have a look now on the "playDisc" notification handler method: <pre> notif_playDisc: function( notif ) { // Remove current possible moves (makes the board more clear) dojo.query( '.possibleMove' ).removeClass( 'possibleMove' ); this.addDiscOnBoard( notif.args.x, notif.args.y, notif.args.player_id ); }, </pre> No surprise here, we re-used some existing stuff to: * Remove the highlighted squares. * Add a new disc on board, coming from player panel. Now, here's the method that handle the turnOverDiscs notification: <pre> notif_turnOverDiscs: function( notif ) { // Get the color of the player who is returning the discs var targetColor = this.gamedatas.players[ notif.args.player_id ].color; // Made these discs blinking and set them to the specified color for( var i in notif.args.turnedOver ) { var disc = notif.args.turnedOver[ i ]; // Make the disc blink 2 times var anim = dojo.fx.chain( [ dojo.fadeOut( { node: 'disc_'+disc.x+''+disc.y } ), dojo.fadeIn( { node: 'disc_'+disc.x+''+disc.y } ), dojo.fadeOut( { node: 'disc_'+disc.x+''+disc.y, onEnd: function( node ) { // Remove any color class dojo.removeClass( node, [ 'disccolor_000000', 'disccolor_ffffff' ] ); // ... and add the good one dojo.addClass( node, 'disccolor_'+targetColor ); } } ), dojo.fadeIn( { node: 'disc_'+disc.x+''+disc.y } ) ] ); // end of dojo.fx.chain // ... and launch the animation anim.play(); } }, </pre> The list of the discs be turned over has been made available by our server side code in "notif.args.turnedOver" (see previous paragraph). We loop through all these discs, and create a complex animation using dojo.Animation for each of it. The complete documentation on dojo animations [http://dojotoolkit.org/documentation/tutorials/1.6/animation/ can be found here]. In few words: we create a chain of 4 animations to make the disc fade out, fade in, fade out again, and fade in again. At the end of the second fade out, we change the color of the disc. Finally, we launch the animation with "play()". d69108e07a1157d677d0be32ad3ad5f0bf653860 Studio FAQ 0 53 302 296 2012-11-25T12:38:59Z Een 3 /* Is there a quick way to access the database for my current table? */ wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. == Is there a quick way to access the database for my current table? == Yes! While playing a game on studio, you have a "Go to game database" link at the bottom of your game. This link will bring you directly to the database for the current table. d08951d5aeff9840f161e2f42c60814d94b4a982 314 302 2012-11-27T20:52:20Z Een 3 moved [[Development FAQ]] to [[Studio FAQ]] wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. == Is there a quick way to access the database for my current table? == Yes! While playing a game on studio, you have a "Go to game database" link at the bottom of your game. This link will bring you directly to the database for the current table. d08951d5aeff9840f161e2f42c60814d94b4a982 329 314 2012-11-30T13:13:17Z Een 3 wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == Is there a special way to declare the strings that must be translated? == Yes. This declaration is made through transparent functions, that depend on the context. In javascript files, you should use _( 'My string to translate' ) In php files, you should use self::_( 'My string to translate' ) when the string can be translated on the server side (ex: title included in the game layout) and clienttranslate( 'My string to translate' ) when the string must be translated on the client side (ex: message for the game log). == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. == Is there a quick way to access the database for my current table? == Yes! While playing a game on studio, you have a "Go to game database" link at the bottom of your game. This link will bring you directly to the database for the current table. e6503c44ae66f7402062c4967deadea42a478c0e 330 329 2012-11-30T13:13:43Z Een 3 /* Is there a special way to declare the strings that must be translated? */ wikitext text/x-wiki This is a place where we will collect and answer frequently asked questions. == What should I use to access the files through SFTP? == There is a lot of tools to do that. Use the one you are the most comfortable with. On Linux, you can for example use the 'Connect to server' function of the Nautilus file management system, or use sshfs. On Windows, there is for example the WinSCP client. == It's pretty annoying to log in with multiple users to start a game. Is there some easier way? == You can use the 'Express start' function. It will automatically make the specified number of players join the game (using the first of your ten player accounts available) and start the game. During the game, there is a red arrow on the right of each player name, that you can use to open a tab from this player's perspective. You can also end the game in two clicks by clicking the 'End game' button then selecting 'Express game stop' in the popup. == What is the working language on BGA studio? == Working language is '''English'''. Variables and functions must be named with English words. Comments must be written in English. Game interface strings and game logs must be written in English. == How can I provide translation in my language? == BGA administrators will translate the game in French before the game release. After the game release, the collaborative translation interface can be used to translate into other languages. == Is there a special way to declare the strings that must be translated? == Yes. This declaration is made through transparent functions, that depend on the context. In javascript files, you should use _( 'My string to translate' ). In php files, you should use self::_( 'My string to translate' ) when the string can be translated on the server side (ex: title included in the game layout) and clienttranslate( 'My string to translate' ) when the string must be translated on the client side (ex: message for the game log). == I updated the images in the 'img' folder of my game, but they don't show? == Please try emptying your browser cache and reloading the page. == I added some game options / some game statistics, but they don't show? == An extra deployment action from the BGA administrators is needed to activate new game options and statistics. Please contact us. == Is there a quick way to access the database for my current table? == Yes! While playing a game on studio, you have a "Go to game database" link at the bottom of your game. This link will bring you directly to the database for the current table. 347ddc92e9e7cbfe28522592fc2550230373ab27 Development 0 47 303 295 2012-11-25T16:46:42Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [['terms & conditions' document:BGA_TC_Dev_en.pdf]]. It's really quick, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment and the following sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] ea9b6c9329378a3c6087764ef21789fa4045658c 310 303 2012-11-25T21:20:30Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment and the following sentence 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 250ad0fb0beb3717c7ba8e705c8e07a5af724385 311 310 2012-11-25T21:22:25Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) === Other resources === [[Development FAQ]] [[Development file reference]] [[Development function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 5af77415355ccf88e63dafcfd73ca902364ca78d 316 311 2012-11-27T20:53:07Z Een 3 /* Other resources */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == BGA Studio documentation == === How do I register? === Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! === Ok, I registered, what do I get? === First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! === Great, I'm in! ... How should I start? === If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) === Other resources === [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] c025722f9ad5f6199ddad7cb28099f0eeee36959 321 316 2012-11-27T20:54:33Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == How do I register? == Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek to tutorials for the example games: * [[Tutorial reversi]] * [[Tutorial hearts]] * [[Tutorial xxx ]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] cd840ccedee7bdbbb48175292cdbc187adffda9e 328 321 2012-11-29T23:08:13Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] == How do I register? == Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at tutorials for two example games: * [[Tutorial reversi]] * [[Tutorial gomoku ]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 2d04ceb441b20e7d1be485478ad8716df8f72b6a 332 328 2012-11-30T13:50:28Z Een 3 /* How can I develop a board game on BGA Studio? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at tutorials for two example games: * [[Tutorial reversi]] * [[Tutorial gomoku ]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 39257b26b818eda07805de2338e456c3b42df777 333 332 2012-11-30T13:54:00Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 5f43c2d8a01bca25cac35caa417c67c5428ecf07 334 333 2012-11-30T13:54:35Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail to [http://en.boardgamearena.com/#!doc/Contact_us BGA contact address]. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 72dc57200d6a3312dadb9ff5d2d1aaa7c3d73e0e 336 334 2012-11-30T14:35:09Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail to studio(at)boardgamearena.com. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 7bd6cd9d30a6adb2837daf46206634e2e087c3cb 337 336 2012-11-30T14:35:27Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at studio(at)boardgamearena.com. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 4bd37a3234a5ff6846a7e6a0a266ea4d532a6874 338 337 2012-11-30T14:35:54Z Een 3 /* How do I register? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, you get by e-mail a list of the games we have an agreement to develop. Please keep this list confidential, or it would ruin our tradition to make players guess the name of the next game on the forum! <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 0460b4756dc697bb7e2c0313c08d9d41e4365a2b 339 338 2012-11-30T14:57:01Z Een 3 /* Ok, I registered, what do I get? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, from time to time you will get by e-mail the names of some of the games we have an agreement to develop, so that you can tell us 'Hey, this game is great! I want to develop it!' (please keep these names confidential, or it would ruin our tradition to make players guess the name of the next game on the forum!) <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] ec37ab7db579bad08c6bd4b2d8944c42f8289445 340 339 2012-11-30T14:57:41Z Een 3 /* Ok, I registered, what do I get? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, from time to time you will get by e-mail the names of some of the games we have an agreement to develop, so that you can tell us 'Hey, this game is great! I want to develop it!' (please keep these names confidential, or it would ruin our tradition to make players guess the name of the next game on the forum) <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 9ed07dc33eb79a958736a93bf3dc10151ecdd400 341 340 2012-11-30T15:03:35Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, from time to time you will get by e-mail the names of some of the games we have an agreement to develop, so that you can tell us 'Hey, this game is great! I want to develop it!' (please keep these names confidential, or it would ruin our tradition to make players guess the name of the next game on the forum) <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) If you have any questions, please ask them on the [http://forum.boardgamearena.com/viewforum.php?f=12 development forum]! == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] d2385456525acba6606d1944f34d9bac47a0460a 342 341 2012-11-30T15:03:57Z Een 3 /* Great, I'm in! ... How should I start? */ wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, from time to time you will get by e-mail the names of some of the games we have an agreement to develop, so that you can tell us 'Hey, this game is great! I want to develop it!' (please keep these names confidential, or it would ruin our tradition to make players guess the name of the next game on the forum) <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) If you have any questions, please ask them on the [http://forum.boardgamearena.com/viewforum.php?f=12 development forum]. == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 01f7f2a589a553ea6267d12e68f7b0cd5907a607 344 342 2012-11-30T15:50:47Z Een 3 Redirected page to [[Studio]] wikitext text/x-wiki #REDIRECT[[Studio]] 75f930ede7d4ad1a62943418c718a02b755fc4d5 Studio function reference 0 55 304 245 2012-11-25T18:37:20Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class <gamename>.action.php === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === == Client side (Javascript functions) == ; todo : todo 5a8d76a6197493599d8d3a89cb9447ed0edc7c2b 305 304 2012-11-25T18:57:56Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row == Client side (Javascript functions) == ; todo : todo c8e9bb737a440acb0eee50a8b34aa14ef8a13edb 306 305 2012-11-25T19:04:06Z Een 3 /* Table class (.game.php) */ wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row == Client side (Javascript functions) == ; todo : todo 0b01bb492d9f22816dcd327e0def11a3e8abe281 307 306 2012-11-25T19:15:02Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; todo : todo 64a5654f4a93ed215c0270c01cde118163a7664a 308 307 2012-11-25T21:10:34Z Een 3 /* Client side (Javascript functions) */ wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.slideToObjectPos( $('token_'+token.token_id), $('cp_background'), x_pix, y_pix, 10 ).play(); ; this.isSpectator ; this.player_id ; this.updateCounters(gamedatas.counters) ; this.addTooltipToClass( 'cp_token_icon_color1', _('Green'), '' ); ; this.addEventToClass( "cp_token", "onclick", "onClickToken"); ; this.isCurrentPlayerActive() ; this.checkAction( 'selectTokens' ) ; this.showMessage( _('You must select at least two tokens'), 'error' ); ; this.scoreCtrl[ notif.args.player_id ].incValue( notif.args.score_delta ); ; this.updateCounters(notif.args.counters); ; this.ajaxcall( "/colorpop/colorpop/endgame.html", { }, this, function( result ) {} ); b8930b0747d4b187b304b90ae7bc63c4996b456f 317 308 2012-11-27T20:53:20Z Een 3 moved [[Development function reference]] to [[Studio function reference]] wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.slideToObjectPos( $('token_'+token.token_id), $('cp_background'), x_pix, y_pix, 10 ).play(); ; this.isSpectator ; this.player_id ; this.updateCounters(gamedatas.counters) ; this.addTooltipToClass( 'cp_token_icon_color1', _('Green'), '' ); ; this.addEventToClass( "cp_token", "onclick", "onClickToken"); ; this.isCurrentPlayerActive() ; this.checkAction( 'selectTokens' ) ; this.showMessage( _('You must select at least two tokens'), 'error' ); ; this.scoreCtrl[ notif.args.player_id ].incValue( notif.args.score_delta ); ; this.updateCounters(notif.args.counters); ; this.ajaxcall( "/colorpop/colorpop/endgame.html", { }, this, function( result ) {} ); b8930b0747d4b187b304b90ae7bc63c4996b456f 324 317 2012-11-29T22:47:37Z Een 3 /* Client side (Javascript functions) */ wikitext text/x-wiki This page references useful server side and client side functions, so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.player_id : Id of the player on which browser the code is running. ; this.isSpectator : Flag set to true if the user at the table is a spectator (not a player). ; this.gamedatas : Contains your initial set of datas to init the game, created at game start or game refresh (F5) : You can update it as needed to keep an up to date reference of the game on the client side. ; slideToObject: function( mobile_obj, target_obj, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one : Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo. ; slideToObjectPos: function( mobile_obj, target_obj, target_x, target_y, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object. ; updateCounters(counters) : Useful for updating game counters in the player panel (such as resources). ; 'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ] : All counters must be referenced in this.gamedatas.counters and will be updated. : DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'. ; addTooltip( node, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. ; addTooltipHtml( node, html, delay ); : Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card). ; addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. : NB: all concerned nodes must have IDs to get tooltips ; addTooltipHtmlToClass( cssClass, html, delay ); : Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card). : NB: all concerned nodes must have IDs to get tooltips ; this.addEventToClass( "cp_token", "onclick", "onClickToken"); ; this.isCurrentPlayerActive() ; this.checkAction( 'selectTokens' ) ; this.showMessage( _('You must select at least two tokens'), 'error' ); ; this.scoreCtrl[ notif.args.player_id ].incValue( notif.args.score_delta ); ; this.updateCounters(notif.args.counters); ; this.ajaxcall( "/colorpop/colorpop/endgame.html", { }, this, function( result ) {} ); 2883f9c0abb0ad4818ba23199536621e31463a82 325 324 2012-11-29T23:04:27Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions (and some interesting class variables), so that nobody needs to reinvent the wheel (unless he wants to). == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.player_id : Id of the player on whose browser the code is running. ; this.isSpectator : Flag set to true if the user at the table is a spectator (not a player). ; this.gamedatas : Contains your initial set of datas to init the game, created at game start or game refresh (F5) : You can update it as needed to keep an up to date reference of the game on the client side. ; slideToObject: function( mobile_obj, target_obj, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one : Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo. ; slideToObjectPos: function( mobile_obj, target_obj, target_x, target_y, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object. ; updateCounters(counters) : Useful for updating game counters in the player panel (such as resources). ; 'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ] : All counters must be referenced in this.gamedatas.counters and will be updated. : DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'. ; addTooltip( node, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. ; addTooltipHtml( node, html, delay ); : Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card). ; addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. : NB: all concerned nodes must have IDs to get tooltips ; addTooltipHtmlToClass( cssClass, html, delay ); : Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card). : NB: all concerned nodes must have IDs to get tooltips ; addEventToClass: function( cssClassName, eventName, functionName ) : Same as dojo.connect(), but for all the nodes set with the specified cssClassName ; addStyleToClass: function( cssClassName, cssProperty, propertyValue ) : Same as dojo.style(), but for all the nodes set with the specified cssClassName ; isCurrentPlayerActive() : Returns true if the player on whose browser the code is running is currently active (it's his turn to play) ; checkAction: function( action, nomessage ) : Check if player can do the specified action by taking into account: _ current game state & _ interface locking : return true if action is authorized : return false and display an error message if not (display no message if nomessage is specified) ; showMessage: function( msg, type ) : Show an information message during a few seconds at the top of the page : Type can be 'error' or 'info' ; this.scoreCtrl[ player_id ].incValue( score_delta ); : Adds score_delta (positive or negative integer) to the current score value for player 196b47f3b6d139d77a359829cbfa749061bc3d73 326 325 2012-11-29T23:06:57Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions (and some interesting class variables), so that nobody needs to reinvent the wheel (unless he wants to). This list is not exhaustive, in particular functions already well described by comments in the 'EmptyGame' game template may not be described again below. == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.player_id : Id of the player on whose browser the code is running. ; this.isSpectator : Flag set to true if the user at the table is a spectator (not a player). ; this.gamedatas : Contains your initial set of datas to init the game, created at game start or game refresh (F5) : You can update it as needed to keep an up to date reference of the game on the client side. ; slideToObject: function( mobile_obj, target_obj, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one : Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo. ; slideToObjectPos: function( mobile_obj, target_obj, target_x, target_y, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object. ; updateCounters(counters) : Useful for updating game counters in the player panel (such as resources). ; 'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ] : All counters must be referenced in this.gamedatas.counters and will be updated. : DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'. ; addTooltip( node, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. ; addTooltipHtml( node, html, delay ); : Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card). ; addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. : NB: all concerned nodes must have IDs to get tooltips ; addTooltipHtmlToClass( cssClass, html, delay ); : Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card). : NB: all concerned nodes must have IDs to get tooltips ; addEventToClass: function( cssClassName, eventName, functionName ) : Same as dojo.connect(), but for all the nodes set with the specified cssClassName ; addStyleToClass: function( cssClassName, cssProperty, propertyValue ) : Same as dojo.style(), but for all the nodes set with the specified cssClassName ; isCurrentPlayerActive() : Returns true if the player on whose browser the code is running is currently active (it's his turn to play) ; checkAction: function( action, nomessage ) : Check if player can do the specified action by taking into account: _ current game state & _ interface locking : return true if action is authorized : return false and display an error message if not (display no message if nomessage is specified) ; showMessage: function( msg, type ) : Show an information message during a few seconds at the top of the page : Type can be 'error' or 'info' ; this.scoreCtrl[ player_id ].incValue( score_delta ); : Adds score_delta (positive or negative integer) to the current score value for player 3cbe8ea5ebf585d8ace0752c8030f718dd2fe28b 327 326 2012-11-29T23:07:06Z Een 3 wikitext text/x-wiki This page references useful server side and client side functions (and some interesting class variables), so that nobody needs to reinvent the wheel (unless he wants to). This list is not exhaustive, in particular functions already well described by comments in the 'EmptyGame' game template may not be described again below. == Server side (PHP functions) == === APP_GameAction class (<gamename>.action.php) === ; function isArg( $argName ) : Is this argument filled ? ; function getArg( $argName, $argType, $mandatory=false, $default=NULL, $argTypeDetails=array(), $bCanFail=false ) : Get script argument with the correct type : bCanFail means than a validation failure is possible (user input) : The main argType values are as follows. <pre> define( 'AT_int', 0 ); // an integer define( 'AT_posint', 1 ); // a positive integer define( 'AT_float', 2 ); // a float define( 'AT_email', 3 ); // an email define( 'AT_url', 4 ); // a URL define( 'AT_bool', 5 ); // 1/0/true/false define( 'AT_enum', 6 ); // argTypeDetails list the possible values define( 'AT_alphanum', 7 ); // only 0-9a-zA-Z_ and space </pre> === Table class (<gamename>.game.php) === ; function _( $text ) : Transparent function, used to mark strings to be translated on the server side (ex: error message) ; function clienttranslate( $string ) : Transparent function: used to mark string to be translated on client side (ex: notification message) ; function getPlayersNumber() : Returns the number of players playing at the table ; function checkAction( $actionName, $bThrowException=true ) : Check if action is valid regarding current game state (exception if fails) : if "bThrowException" is set to "false", the function return false in case of failure instead of throwing and exception ; function getActivePlayerId() : Get the "active_player", whatever what is the current state type : Note: it does NOT mean that this player is active right now, because state type could be "game" or "multiplayer" ; function getActivePlayerName() : Get the "active_player" name ; function getCurrentPlayerId() : Get the "current_player". The current player is the one from which the action originated. It is not always the active player. ; function getCurrentPlayerName() : Get the "current_player" name ; function getCurrentPlayerColor() : Get the "current_player" color ; function isCurrentPlayerZombie() : Check the "current_player" zombie status ; function activeNextPlayer() : Make the next player active ; function activePrevPlayer() : Make the previous player active ; function giveExtraTime( $player_id, $specific_time=null ) : Give standard extra time to this player (standard extra time is a game option) ; function initStat( $table_or_player, $name, $value, $player_id=null ) : Create a statistic entry for the specified statistics with a default value : In case of a "player" entry, if player_id is not specified, all players are set to the same value ; function setStat( $value, $name, $player_id = null ) : Set statistic value ; function incStat( $delta, $name, $player_id = null ) : Increment (or decrement) specified value ; function DbQuery( $sql ) : Executes sql query on the database ; function getCollectionFromDB( $sql, $bSingleValue=false ) : Returns an associative array of rows for the sql query. First column must be a primary or alternate key. The resulting collection can be empty. ; protected function getNonEmptyCollectionFromDB( $sql ) : Idem, but raise an exception if the collection is empty ; function getUniqueValueFromDB( $sql ) : Returns a unique value from DB or null if no value is found : Raise an exception if more than 1 row is returned ; function getObjectFromDB( $sql ) : Returns one row for the sql query as an associative array or null if there is no result : Raise an exception if the query return more than one row ; function getNonEmptyObjectFromDB( $sql ) : Idem, but raise an exception if the query doesn't return exactly one row === Exceptions you can throw === ; throw new BgaUserException ( $error_message) : Base class to notify a user error ; throw new BgaSystemException ( $error_message) : Base class to notify a system exception. The message will be hidden from the user, but show in the logs. Use this if the message contains technical information. ; throw new BgaSystemVisibleException ( $error_message) : Same as previous, except that the message is visible by the user. You can use this if the message is understandable by the user. == Client side (Javascript functions) == ; this.player_id : Id of the player on whose browser the code is running. ; this.isSpectator : Flag set to true if the user at the table is a spectator (not a player). ; this.gamedatas : Contains your initial set of datas to init the game, created at game start or game refresh (F5) : You can update it as needed to keep an up to date reference of the game on the client side. ; slideToObject: function( mobile_obj, target_obj, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one : Animate a slide of the DOM object referred to by domNodeToSlide from its current position to the xpos, ypos relative to the object referred to by domNodeToSlideTo. ; slideToObjectPos: function( mobile_obj, target_obj, target_x, target_y, duration, delay ) : Return an dojo.fx animation that is sliding a DOM object from its current position over another one at the given coordinates relative to the target object. ; updateCounters(counters) : Useful for updating game counters in the player panel (such as resources). ; 'counters' arg is an associative array [counter_name_value => [ 'counter_name' => counter_name_value, 'counter_value' => counter_value_value], ... ] : All counters must be referenced in this.gamedatas.counters and will be updated. : DOM objects referenced by 'counter_name' will have their innerHTML updated with 'counter_value'. ; addTooltip( node, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to the DOM node. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. ; addTooltipHtml( node, html, delay ); : Add an HTML tooltip to the DOM node (for more elaborate content such as presenting a bigger version of a card). ; addTooltipToClass( cssClass, _( helpString ), _( actionString ), delay ); : Add a simple text tooltip to all the DOM nodes set with this cssClass. Only one of 'helpString' or 'actionString' must be used. _() must be used for the text to be marked for translation. : NB: all concerned nodes must have IDs to get tooltips ; addTooltipHtmlToClass( cssClass, html, delay ); : Add an HTML tooltip to to all the DOM nodes set with this cssClass (for more elaborate content such as presenting a bigger version of a card). : NB: all concerned nodes must have IDs to get tooltips ; addEventToClass: function( cssClassName, eventName, functionName ) : Same as dojo.connect(), but for all the nodes set with the specified cssClassName ; addStyleToClass: function( cssClassName, cssProperty, propertyValue ) : Same as dojo.style(), but for all the nodes set with the specified cssClassName ; isCurrentPlayerActive() : Returns true if the player on whose browser the code is running is currently active (it's his turn to play) ; checkAction: function( action, nomessage ) : Check if player can do the specified action by taking into account: _ current game state & _ interface locking : return true if action is authorized : return false and display an error message if not (display no message if nomessage is specified) ; showMessage: function( msg, type ) : Show an information message during a few seconds at the top of the page : Type can be 'error' or 'info' ; this.scoreCtrl[ player_id ].incValue( score_delta ); : Adds score_delta (positive or negative integer) to the current score value for player 55c96307b77bd59db8d1da2247aa971adf57c54a Fil:BGA TC Dev en.pdf 6 69 309 2012-11-25T21:17:46Z Een 3 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 331 309 2012-11-30T13:33:17Z Een 3 uploaded a new version of &quot;[[File:BGA TC Dev en.pdf]]&quot; wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Studio back-office 0 56 312 252 2012-11-27T20:50:47Z Een 3 wikitext text/x-wiki You will find the URL to the Studio back-office in the 'resources.html' file at the root of your SFTP access. Here is a list and description of the links and functions in this back-office. Click on a menu to display its content. === Documentation === Contains links to this wiki, the development forum and the bugs forum. === Database === Contains a link to the Studio database administration tool (PHPMyAdmin). Your login / password for this tool is the same as for your SFTP access. === Sources === Contains a form for committing your sources to the BGA repository. * Game name field should contain the name of your game (lower case, no space). * Comment field should contain your commit comment describing changes to the code since your last commit. You should commit from time to time when you hit some landmarks in your development. This is an extra assurance not to lose your code, and to have the possibility (by asking BGA administrators) to get a previous version of your code if you need to backtrack. === Logs === Gives you a web based access to the studio server logs. ; Current table error log : main log of interest to you while developing, it contains the error happening at the table you are currently playing at. ; Current table request logs : this log traces all the actions happening at the table you are currently playing at. ; Javascript error log : this log traces all the Javascript errors happening on the client side. Errors are also briefly displayed in your browser, but in this log it's better formatted and you can look a it quietly. ; Gameserver error log : this log traces all errors happening on the gameserver. It should mainly be useful if your game setup crashes (ie before your table is ready, so before errors are collected in the current table error log), for example if there is a syntax error in your 'dbmodel.sql' file. ; HTTP error log : this log traces the web server errors. This is useful to look at PHP syntax errors and warnings. Please note that the three last logs are common to all games being developed on the platform, so there may be some noise in the data you are interested in. You can open the log links in a different tab and just hit F5 when you need to refresh. The URL you will get for the new tab has a "?n=100" parameter that gives the number of lines to display: you can modify it in the URL if you need more. b8dac291fbe5b8e2412fc015dff9c7f432d8bd59 313 312 2012-11-27T20:51:22Z Een 3 wikitext text/x-wiki You will find the URL to the Studio back-office in the 'resources.html' file at the root of your SFTP access. Here is a list and description of the links and functions in this back-office. Click on a menu to display its content. === Documentation === Contains links to this wiki, the development forum and the bugs forum. === Database === Contains a link to the Studio database administration tool (PHPMyAdmin). Your login / password for this tool is the same as for your SFTP access. === Sources === Contains a form for committing your sources to the BGA repository. * Game name field should contain the name of your game (lower case, no space). * Comment field should contain your commit comment describing changes to the code since your last commit. You should commit from time to time when you hit some landmarks in your development. This is an extra assurance not to lose your code, and to have the possibility (by asking BGA administrators) to get a previous version of your code if you need to backtrack. === Logs === Gives you a web based access to the studio server logs. ; Current table error log : main log of interest to you while developing, it contains the error happening at the table you are currently playing at. ; Current table request logs : this log traces all the actions happening at the table you are currently playing at. ; Javascript error log : this log traces all the Javascript errors happening on the client side. Errors are also briefly displayed in your browser, but in this log it's better formatted and you can look a it quietly. ; Gameserver error log : this log traces all errors happening on the gameserver. It should mainly be useful if your game setup crashes (ie before your table is ready, so before errors are collected in the current table error log), for example if there is a syntax error in your 'dbmodel.sql' file. ; HTTP error log : this log traces the web server errors. This is useful to look at PHP syntax errors and warnings. Please note that the three last logs are common to all games being developed on the platform, so there may be some noise in the data you are interested in. You can open the log links in a different tab and just hit F5 when you need to refresh. The URL you will get for the new tab has a "?n=100" parameter that gives the number of lines to display: you can modify it in the URL if you need more. cdb10c7884bbf321c65a6abd52427eee6870b1b3 Development FAQ 0 70 315 2012-11-27T20:52:20Z Een 3 moved [[Development FAQ]] to [[Studio FAQ]] wikitext text/x-wiki #REDIRECT [[Studio FAQ]] 0e0d928fd9ebb07aa5cabcbcb800036357516c70 Development function reference 0 71 318 2012-11-27T20:53:20Z Een 3 moved [[Development function reference]] to [[Studio function reference]] wikitext text/x-wiki #REDIRECT [[Studio function reference]] 0d4e31ae78128f335e8e652b8bd209497bea7540 Studio file reference 0 54 319 244 2012-11-27T20:53:33Z Een 3 moved [[Development file reference]] to [[Studio file reference]] wikitext text/x-wiki This is a quick reference for the files used to implement a game. For more information, edit the file and read the introductory comment. === 'img' directory === This directory contains the images for your game: * game_box.png is displayed on the main site on the game description page and when creating a table (280x280 px) * game_icon.png is the icon displayed in the lists of games and tables (50x50 px) * publisher.png is the logo of the publisher of the game, displayed on the game description page (width: 150 px) * and other images that you need. You should use [http://www.w3schools.com/css/css_image_sprites.asp CSS sprites] for better web performance. === dbmodel.sql === File for creating specific database tables that you will need to persist data during the game (for example a table for cards). === gameoptions.inc.php === File for describing your game options (= game variants) === <gamename>.action.php === File used to describe methods that can be called from the client interface through javascript, get parameters and call the appropriate game functions. === <gamename>.css === CSS styles specific to your game. === <gamename>.game.php === This is the main file for your game logic. Here you initialize the game, persist data, implement the rules and notify changes to the client interface. === <gamename>.js === This is the main file for your game interface. Here you will define: * which actions on the page will generate calls to the server * what happens when you get a notification for change from the server and how it will show in the browser. === <gamename>.view.php and <gamename>_<gamename>.tpl === Files used to set up the page layout ('view') for the game. === material.inc.php === File used to describe all the game material (cards with their description, dices, tokens...). You can also use it to define game constants. === states.inc.php === This file describes the states your game will iterate over, and the transitions to get from one state to another. === stats.inc.php === File used to list statistics that you want to update during the game to be presented to players at the end of the game. bb690d4d6d5bf813de7ac7ae7d19ade7323cecab Development file reference 0 72 320 2012-11-27T20:53:33Z Een 3 moved [[Development file reference]] to [[Studio file reference]] wikitext text/x-wiki #REDIRECT [[Studio file reference]] 7e0b4170c41b68fcf9b09724d3d1b7bf8de5a76e Tutorial gomoku 0 73 335 2012-11-30T13:56:04Z Een 3 Created page with "TODO" wikitext text/x-wiki TODO b698c11e84460ed5999bfeb5cbf25b865c238f3c Studio 0 49 343 228 2012-11-30T15:49:04Z Een 3 wikitext text/x-wiki [[File:Bga_studio_small.jpg]] == What is this? == '''Board Game Arena Studio''' is a platform to build online board game adaptation using the Board Game Arena platform. It is open to any gamer with development skills :) See announcement here: http://forum.boardgamearena.com/viewtopic.php?f=10&t=1973 == How can I develop a board game on BGA Studio? == Check these presentations first: * [http://www.slideshare.net/boardgamearena/5-reasons-why-you-should-use-bga-studio-for-your-online-board-game 5 reasons why you should use BGA Studio for your online board game] * [http://www.slideshare.net/boardgamearena/the-8-steps-to-create-a-board-game-on-board-game-arena The 8 steps to create a board game on Board Game Arena] * [http://www.slideshare.net/boardgamearena/the-bga-framework-at-a-glance The BGA Framework at a glance] * [http://www.slideshare.net/boardgamearena/bga-studio-focus-on-bga-game-state-machine Focus on BGA game state machine] * [http://www.slideshare.net/boardgamearena/bga-studio-guidelines BGA developers guidelines] == How do I register? == Registering is done by e-mail at '''studio(at)boardgamearena.com'''. Please provide the following information: * your developer user name to be used on “BGA Studio” (for technical reasons, no space, number or special character); * your real name; * your e-mail address; * your postal address. We also drafted a quick [http://en.doc.boardgamearena.com/images/0/02/BGA_TC_Dev_en.pdf 'terms & conditions' document]. It's very light, so as to get to the fun part faster. To be valid, the registration e-mail must contain this document as an attachment, with the following sentence in the mail body: 'I agree with the terms & conditions for developers on BGA Studio joined as an attachment'. And of course, we also encourage you to tell us about which games you would love to develop on BGA! == Ok, I registered, what do I get? == First, from time to time you will get by e-mail the names of some of the games we have an agreement to develop, so that you can tell us 'Hey, this game is great! I want to develop it!' (please keep these names confidential, or it would ruin our tradition to make players guess the name of the next game on the forum) <pre>NB: during the BETA pĥase, to smooth things up and make sure that everything is working correctly, we will work only with 3 fearless developers on 3 simple games.</pre> Second, once we have discussed together and are fixed on a game you'll take charge of, we'll create your studio account and you will get: * one login / password to access files through SFTP * ten logins with numeric suffixes from 0 to 9 and a common simple password to test games on the studio website while developing. Once logged in to your SFTP root folder, you will find: * a 'resources.html' file with the URLs to use and some extra connection information * three folders containing the three simple games provided as examples * a folder for the game you will be developing initialized after our 'EmptyGame' template, providing the game structure (and comments! and examples!) Then... that's all, you can start! == Great, I'm in! ... How should I start? == If you didn't already, check the presentations at the top of this page to get the basics. After that, we would advise you to take a peek at this tutorial for creating the Reversi example game: * [[Tutorial reversi]] Then start editing files and see what happens! ;) If you have any questions, please ask them on the [http://forum.boardgamearena.com/viewforum.php?f=12 development forum]. == Other resources == [[Studio FAQ]] [[Studio file reference]] [[Studio function reference]] [[Studio back-office]] [http://forum.boardgamearena.com/viewforum.php?f=12 Development forum] [http://forum.boardgamearena.com/viewforum.php?f=4 Bugs forum] 01f7f2a589a553ea6267d12e68f7b0cd5907a607 Fil:Quoridor.png 6 74 345 2013-02-20T03:47:43Z Kaminix 1857 Exempel på hur en lång korridor i spelets slutskede kan se ut. wikitext text/x-wiki Exempel på hur en lång korridor i spelets slutskede kan se ut. ebc092d25629609a9e29fc1e263302f7994f650f Gamehelpquoridor 0 75 346 2013-02-20T03:48:42Z Kaminix 1857 Page created, Swedish rules. wikitext text/x-wiki Quoridor är ett på ytan väldigt enkelt strategispel för två eller fyra spelare. Målet är att ta sin pjäs till andra sidan brädet. ==Regler== Båda spelarna startar med sina pjäser i mitten på motsatta sidor brädet. För att göra detta finns det varje tur två möjliga drag att göra: * Flytta din pjäs ett steg i valfri ortogonal riktning, det vill säga ej diagonalt. * Sätt ut ett staket förr att hindra motståndarens framfart. I början av spelet tilldelas varje spelare i ett tvåmannaspel 10 staketbitar och i ett fyrmannaspel 5 staketbitar. Gällande placering av staketbitar gäller följande: * Staketbitarna får inte gå över varandra, det är dock helt OK att placera staket mellan två andra staket. * Det är ej tillåtet att stänga in någon av spelarna, att sätta ut ett staket som gör detta är inte ett giltigt drag. * Ovanstående regel innebär också att det inte är tillåtet att bygga staket så motståndaren inte kan nå sitt mål. Om pjäserna skulle stå bredvid varandra är det möjligt att hoppa över en motståndares pjäs. Om rutan bakom motståndaren är blockerad av ett staket är det istället möjligt att snedda över pjäsen. ==Vanliga spelsätt och strategier== Det är vanligt att båda spelarna väntar med att placera ut staket de första dragen och då bara förflyttar sina pjäser framåt ungefär halva spelplanen. Exakt hur mycket spelarna förflyttar sig varierar beroende på spelarens taktik. Med staketen byggs sedan långa korridorer för att tvinga motståndaren ta så lång omväg som möjligt till sitt mål. För att påverka hur korridoren utformas kan man utnyttja reglerna för hur staket får sättas igenom att halvt "stänga in sig själv" i syfte att göra ett annat drag otillåtet. Nedan följer exempel på hur en lång korridor i spelets slutskede kan se ut. [[Fil:Quoridor.png]] a109b1392995b08012a387ebbe12227caea9b304 347 346 2013-02-20T05:50:48Z Kaminix 1857 Added a linebreak between text and example. wikitext text/x-wiki Quoridor är ett på ytan väldigt enkelt strategispel för två eller fyra spelare. Målet är att ta sin pjäs till andra sidan brädet. ==Regler== Båda spelarna startar med sina pjäser i mitten på motsatta sidor brädet. För att göra detta finns det varje tur två möjliga drag att göra: * Flytta din pjäs ett steg i valfri ortogonal riktning, det vill säga ej diagonalt. * Sätt ut ett staket förr att hindra motståndarens framfart. I början av spelet tilldelas varje spelare i ett tvåmannaspel 10 staketbitar och i ett fyrmannaspel 5 staketbitar. Gällande placering av staketbitar gäller följande: * Staketbitarna får inte gå över varandra, det är dock helt OK att placera staket mellan två andra staket. * Det är ej tillåtet att stänga in någon av spelarna, att sätta ut ett staket som gör detta är inte ett giltigt drag. * Ovanstående regel innebär också att det inte är tillåtet att bygga staket så motståndaren inte kan nå sitt mål. Om pjäserna skulle stå bredvid varandra är det möjligt att hoppa över en motståndares pjäs. Om rutan bakom motståndaren är blockerad av ett staket är det istället möjligt att snedda över pjäsen. ==Vanliga spelsätt och strategier== Det är vanligt att båda spelarna väntar med att placera ut staket de första dragen och då bara förflyttar sina pjäser framåt ungefär halva spelplanen. Exakt hur mycket spelarna förflyttar sig varierar beroende på spelarens taktik. Med staketen byggs sedan långa korridorer för att tvinga motståndaren ta så lång omväg som möjligt till sitt mål. För att påverka hur korridoren utformas kan man utnyttja reglerna för hur staket får sättas igenom att halvt "stänga in sig själv" i syfte att göra ett annat drag otillåtet. Nedan följer exempel på hur en lång korridor i spelets slutskede kan se ut. <br><br> [[Fil:Quoridor.png]] b72939bfa347714ff37c5117003ec4e2416ca1ef Gamehelpcantstop 0 35 348 170 2013-02-22T04:45:45Z Kaminix 1857 wikitext text/x-wiki Can't Stop är ett väldigt enkelt och snabbt spel! ==Översikt== När man kommit till toppen på en kolumn tar man över hela kolumnen, första spelaren till tre övertagna kolumner vinner. Under en tur får man max klättra på tre olika kolumner, vilka kolumner man får lov att klättra på avgörs med tärningsslag. Vilka kolumner man klättrar på en tur markeras med tre temporära (svarta) markörer och vilka kolumner man får lov att klättra på avgörs med tärningsslag. ==Första spelrundan== 1. Spelaren slår fyra tärningar (detta sker automatiskt på Boardgame Arena). 2. Spelaren väljer två tärningskombinationer och placerar de temporära markörer längst ner i de två kolumner. 3. Spelaren väljer om denne vill slå tärningarna igen eller stanna. 4. Om spelaren stannar byts de temporära markörerna ut mot markörer av spelarens egen färg. 5. Om spelaren väljer att fortsätta slår denne tre tärningar på nytt och processen fortsätter. '''Senare spelrundor''' går till på samma sätt, men istället för att börja i botten av en kolumn så börjar man från där man senast lagt en markör av sin egen färg. '''Om spelaren väljer att fortsätta''' men inte slår några tärningskombinationer där denne har temporära markörer (och alla tre av dessa är i användning) tappar spelaren alla avancemang från den här turen. Detta innebär att de temporära markörerna åker av brädet och spelaren får inte ersätta dessa med markörer av sin egen färg. '''Om spelaren väljer att stanna''' och har en temporär markör i toppen av en kolumn räknas denna som övertagen. Ingen annan kan avancera på den här kolumnen för resten av spelet. (det är alltså i spelets senare skeden fullt möjligt att inte få göra någonting alls på sin tur för att tärningskombinationerna bara reflekterar övertagna kolumner) 63593416b6b11650d7a5d91306baa6587c50d41d Club Board Game Arena 0 8 349 20 2013-06-10T20:27:59Z Sourisdudesert 1 wikitext text/x-wiki ==Why can't you just have a standard donation system where I can choose any money amount ?== With this "club" system, we try to highlight players who supported this website recently or do so on a regular basis. Depending on the amount of your donation, you are a member of the club for a given period of time. Many websites are using a more classical approach with a simple "donation box". By experience, we know that these websites rely on just a few generous users. Board Game Arena chooses to set 3 fixed amounts for donations in order to rely on a bigger number of small donors. ==Is it mandatory to join the club ?== Of course not. You can play for free without any limitation even if you are not a member of the club: Board Game Arena is a free service. Statistics are just an extra : you don't need statistics to play and have fun, don't you ? As a matter of fact, most players are not club members. ==What is a beginner account ? http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif == When you join Board Game Arena, your get a "beginner account" (http://en.boardgamearena.com/theme/img/accounttypes/beginner.gif) for 30 days. This beginner account allow you to view your own ELO ranking (http://en.boardgamearena.com/theme/img/common/rank.png) for each game. After 30 days, your account becomes a standard '''non member''' account (http://en.boardgamearena.com/theme/img/accounttypes/free.gif). ==What becomes of the money ?== Board Game Arena service is managed by a semi-professional team who needs money to make it run (in particular: hosting cost). Player donations are used to develop this website (new features, new games), to make it run (hosting, maintenance), to build the player community (events)... A big "thank you" to all members of the Board Game Arena Club whose contributions allow this website to exist for the enjoyment of everyone ! ff7997026610fbb6d05400848cd31c5206035eea Gamehelphearts 0 52 350 234 2014-12-29T14:45:27Z Hane1 2190 wikitext text/x-wiki Hearts is a card game for 4 players, every man for himself. It uses the standard 52-card pack. Hearts can also be played wth 3 players if cross two was removed. '''Rank''' A (high) to 2 (low). '''Setup''' The entire deck is dealt, giving you a hand of 13 cards. After looking at your hand, choose three cards to pass to another player. The passing rotation is: (1st hand) to the player on your left, (2nd hand) to the player across the table, (3rd hand) to the player on your right, (4th hand) no passing. The rotation repeats until the game ends. '''Tricks''' After passing cards, the player holding the 2 of clubs leads the first trick. Each player must follow suit if possible. If you have no cards of the suit led, you may play a card of any suit. Exception: You may not play a heart or the Queen of Spades on the first trick, even if you have no clubs. The highest card of the suit led wins the trick. The winner of a trick starts the next trick. Hearts may not be led until a heart has been played (this is called "breaking" hearts). The Queen of Spades may be lead at any time. [NB: In traditional Hearts, playing the Queen of Spades also breaks hearts.] There is no trump suit. '''Scoring''' At the end of each hand, each heart taken by a player counts -1, and the Queen of Spades counts -13. If one player has taken all 13 hearts ''and'' the Queen of Spades (this is known as shooting the moon), that player scores 0 and all other players score -26. When one or more players reach zero, the game ends. The player with the highest score wins. '''Variants''' Normal game is 100 points. Quick game is 75 points. a888fa1e937588c94aec4bea050f3ddc642cec5f Gamehelpyatzy 0 76 351 2015-01-16T20:37:48Z Matte segel 2192 Skapade sidan med 'Spelet Yahtzee består av 13 omgångar. I varje omgång, rullar (vilket sköts av att du trycker på en knapp)du 5 tärningar. Under en runda, kan du rulla tärningarna upp t...' wikitext text/x-wiki Spelet Yahtzee består av 13 omgångar. I varje omgång, rullar (vilket sköts av att du trycker på en knapp)du 5 tärningar. Under en runda, kan du rulla tärningarna upp till tre gånger innan du väljer vilken kategori du ska använda tärningarna till. - det första kastet (där du måste rulla alla tärningarna), plus två valfria, åter rullar någon eller alla tärningar. Det finns 13 poängkategorier, och varje måste användas för en av de 13 omgångarna. Detta resulterar ofta i noll poäng för vissa kategorier. De 13 poäng Kategorierna är följande: 1-6: Det finns en kategori för varje nummer på tärningen. Inom dessa kategorier, är poängen summan av prickarna på tärningen i det numret. Till exempel kan tärningarna visa: 1-1-2-5-5 och då antecknas som två poäng i kategorin "ettor", två poäng i "parvisa" kategorin(två av samma siffra, 10 poäng i kategorin "femmor", eller 0 punkter i "tre," "fyra," eller "sexor". Om en spelare gör en totalsumma på minst 63 poäng inom dessa sex kategorierna, får man är en bonus på 35 poäng till. 7. Tre-av-samma (3/tre lika): Minst tre tärningar visar samma ansikte - Poängen är lika med summan av alla 5 tärningar (inte bara 3 av ett slag) 8. Fyra-av-samma (4/fyra lika): Minst fyra tärningar visar samma ansikte - Poängen är lika med summan av alla 5 tärningar (inte bara 4 av en sort) 9. Kåk: (En: tre-av-samma (3/tre lika)-slag och Ett par(2/två lika) - 25 poäng 10. Liten Stege: Fyra sekventiella tärningar 1-2-3-4, 2-3-4-5 eller 3-4-5-6) - 30 poäng 11. Stora Straight: Fem sekventiella tärningar (1-2-3-4-5 eller 2-3-4-5-6) - 40 poäng 12. Yahtzee: Alla fem tärningar visar samma siffra - 50 poäng (plus, när du har fått Yahtzee (50 poäng) kan du göra en Yahtzee, och den får man 100 poäng för. 13. Chance: Alla kombinationer - poängen är lika med summan av alla 5 tärningar 34925b563863eecf6a648c3735667ba3fa1c6654 Gamehelpninemensmorris 0 77 352 2017-06-23T22:21:19Z Kaminix 1857 Skapade sidan med 'Kvarnspel (Nine Men's Morris) är ett anrikt abstrakt brädspel för två spelare som funnits iallafall sedan Romarriket vilket där det spelades i hela imperiet. Spelarna fö...' wikitext text/x-wiki Kvarnspel (Nine Men's Morris) är ett anrikt abstrakt brädspel för två spelare som funnits iallafall sedan Romarriket vilket där det spelades i hela imperiet. Spelarna försöker få bort motståndarens spelar från brädet genom att bilda "kvarnar", en obruten linje med tre stenar på rad, och första spelaren att ha färre än tre stenar kvar på brädet '''förlorar'''. Spelet spelas i två faser som beskrivs nedan. == Första fasen (utplacering av stenar) == Under första fasen turas spelare om att lägga ut sina nio stenar på brädet och försöker under tiden bilda "kvarnar", vilket är när man får tre stenar på rad. Vid bildandet av en kvarn får man ta bort en av motståndarens stenar på brädet, dessa stenar är ur spel och kan inte läggas ut på nytt. Observera att kvarnar endast kan bildas längs linjerna på brädet, alltså ''inte'' diagonalt. == Andra fasen (förflyttning av stenar) == När alla stenar har lagts ut på brädet övergår spelarna till att flytta de stenar som redan ligger på brädet. Förflyttning sker längs med linjerna på brädet och man kan endast gå ett steg i taget. Kvarnar bildas enligt precis samma principer som i första fasen. Man kan inte hoppa över andra stenar. == Regelvariant: Sista stenen är "flygande" == En vanlig regelvariant som man kan välja till här på Board Game Arena är användandet av "flygande" stenar. Vad detta innebär är att en spelares sista sten innan hen förlorar, det vill säga när man bara har tre stenar kvar, inte är begränsade till de vanliga förflyttningsreglerna utan kan flyttas till var som helst på brädet. Vi har valt termen flygande på BGA, men varianten kan även kallas "hoppande" eller "vild". == Vinstkriterier och spelets slut == När en spelare bara har två stenar kvar eller inte kan röra sig (för att alla stenar blockeras av andra stenar) har denne förlorat, och den andra spelaren har vunnit. Alltså vinner '''du''' när du tar motståndarens tredje sista sten eller när du placerat dina stenar så att din motståndare inte längre kan röra sig. dc2b51da8b600063f98d2d86f0c6dd3aa3f6964f 353 352 2017-06-23T22:22:11Z Kaminix 1857 wikitext text/x-wiki '''Kvarnspel (Nine Men's Morris)''' är ett anrikt abstrakt brädspel för två spelare som funnits iallafall sedan Romarriket vilket där det spelades i hela imperiet. Spelarna försöker få bort motståndarens spelar från brädet genom att bilda "kvarnar", en obruten linje med tre stenar på rad, och första spelaren att ha färre än tre stenar kvar på brädet '''förlorar'''. Spelet spelas i två faser som beskrivs nedan. == Första fasen (utplacering av stenar) == Under första fasen turas spelare om att lägga ut sina nio stenar på brädet och försöker under tiden bilda "kvarnar", vilket är när man får tre stenar på rad. Vid bildandet av en kvarn får man ta bort en av motståndarens stenar på brädet, dessa stenar är ur spel och kan inte läggas ut på nytt. Observera att kvarnar endast kan bildas längs linjerna på brädet, alltså ''inte'' diagonalt. == Andra fasen (förflyttning av stenar) == När alla stenar har lagts ut på brädet övergår spelarna till att flytta de stenar som redan ligger på brädet. Förflyttning sker längs med linjerna på brädet och man kan endast gå ett steg i taget. Kvarnar bildas enligt precis samma principer som i första fasen. Man kan inte hoppa över andra stenar. == Regelvariant: Sista stenen är "flygande" == En vanlig regelvariant som man kan välja till här på Board Game Arena är användandet av "flygande" stenar. Vad detta innebär är att en spelares sista sten innan hen förlorar, det vill säga när man bara har tre stenar kvar, inte är begränsade till de vanliga förflyttningsreglerna utan kan flyttas till var som helst på brädet. Vi har valt termen flygande på BGA, men varianten kan även kallas "hoppande" eller "vild". == Vinstkriterier och spelets slut == När en spelare bara har två stenar kvar eller inte kan röra sig (för att alla stenar blockeras av andra stenar) har denne förlorat, och den andra spelaren har vunnit. Alltså vinner '''du''' när du tar motståndarens tredje sista sten eller när du placerat dina stenar så att din motståndare inte längre kan röra sig. ba8376018aa96f373bd45edf66cb6f3fa5b24cef 354 353 2017-06-24T01:12:49Z Kaminix 1857 wikitext text/x-wiki '''Kvarnspel (Nine Men's Morris)''' är ett anrikt abstrakt brädspel för två spelare som funnits iallafall sedan Romarriket där det spelades i hela imperiet. Spelarna försöker få bort motståndarens spelar från brädet genom att bilda "kvarnar", en obruten linje med tre stenar på rad, och första spelaren att ha färre än tre stenar kvar på brädet '''förlorar'''. Spelet spelas i två faser som beskrivs nedan. == Första fasen (utplacering av stenar) == Under första fasen turas spelare om att lägga ut sina nio stenar på brädet och försöker under tiden bilda "kvarnar", vilket är när man får tre stenar på rad. Vid bildandet av en kvarn får man ta bort en av motståndarens stenar på brädet, dessa stenar är ur spel och kan inte läggas ut på nytt. Observera att kvarnar endast kan bildas längs linjerna på brädet, alltså ''inte'' diagonalt. == Andra fasen (förflyttning av stenar) == När alla stenar har lagts ut på brädet övergår spelarna till att flytta de stenar som redan ligger på brädet. Förflyttning sker längs med linjerna på brädet och man kan endast gå ett steg i taget. Kvarnar bildas enligt precis samma principer som i första fasen. Man kan inte hoppa över andra stenar. == Regelvariant: Sista stenen är "flygande" == En vanlig regelvariant som man kan välja till här på Board Game Arena är användandet av "flygande" stenar. Vad detta innebär är att en spelares sista sten innan hen förlorar, det vill säga när man bara har tre stenar kvar, inte är begränsade till de vanliga förflyttningsreglerna utan kan flyttas till var som helst på brädet. Vi har valt termen flygande på BGA, men varianten kan även kallas "hoppande" eller "vild". == Vinstkriterier och spelets slut == När en spelare bara har två stenar kvar eller inte kan röra sig (för att alla stenar blockeras av andra stenar) har denne förlorat, och den andra spelaren har vunnit. Alltså vinner '''du''' när du tar motståndarens tredje sista sten eller när du placerat dina stenar så att din motståndare inte längre kan röra sig. 2312dcd2888f3ba0c064753c11335c087f5a514e Gamehelpbubbleepop 0 78 355 2017-06-24T03:23:54Z Kaminix 1857 Skapade sidan med 'Bubblee Pop är ett sött och roligt spel för två spelare. == Översikt == I Bubblee Pop är målet att poppa så många färgglada bubblees som möjligt, varje poppad bub...' wikitext text/x-wiki Bubblee Pop är ett sött och roligt spel för två spelare. == Översikt == I Bubblee Pop är målet att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren ''kan'' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren ''måste'' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). c854ca3fd792561956baf94a645e4c8ec9fd8f45 356 355 2017-06-24T03:34:27Z Kaminix 1857 wikitext text/x-wiki Bubblee Pop är ett sött och roligt spel för två spelare. == Översikt == I Bubblee Pop är målet att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren ''kan'' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren ''måste'' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. ''Lila bubblees:'' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. ''Blå bubblees:'' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. ''Röda bubblees:'' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. ''Gröna bubblees:'' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. ''Gula bubblees:'' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. ''Svarta bubblees:'' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. affa1ebd10c0efb617bcd5f6965c9ac533bda286 357 356 2017-06-24T03:35:17Z Kaminix 1857 wikitext text/x-wiki Bubblee Pop är ett sött och roligt spel för två spelare. == Översikt == I Bubblee Pop är målet att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren '''kan''' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren '''måste''' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. '''Lila bubblees:''' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Blå bubblees:''' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Röda bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. '''Gröna bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. '''Gula bubblees:''' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. '''Svarta bubblees:''' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. 3ee90bfcde09e94e2bde87e7d631c0140585f35f 358 357 2017-06-24T03:35:45Z Kaminix 1857 wikitext text/x-wiki '''Bubblee Pop'' är ett sött och roligt spel för två spelare. == Översikt == '''Målet i Bubblee Pop''' är att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren '''kan''' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren '''måste''' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. '''Lila bubblees:''' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Blå bubblees:''' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Röda bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. '''Gröna bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. '''Gula bubblees:''' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. '''Svarta bubblees:''' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. b5411e403a90b8f4f3ea9931412ea8858c67e2e8 359 358 2017-06-24T03:36:06Z Kaminix 1857 wikitext text/x-wiki '''Bubblee Pop'' är ett sött och roligt spel för två spelare. == Översikt == '''Målet i Bubblee Pop''' är att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren '''kan''' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren '''måste''' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. '''Lila bubblees:''' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Blå bubblees:''' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Röda bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. '''Gröna bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. '''Gula bubblees:''' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. '''Svarta bubblees:''' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. 73f0b91a6d9b1415e3ab4b51d1ba1f4c886fbf7a 360 359 2017-06-24T03:39:09Z Kaminix 1857 wikitext text/x-wiki '''Bubblee Pop'' är ett sött och roligt spel för två spelare. == Översikt == '''Målet i Bubblee Pop''' är att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren '''kan''' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren '''måste''' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. '''Lila bubblees:''' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Blå bubblees:''' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Röda bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. '''Gröna bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. '''Gula bubblees:''' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. '''Svarta bubblees:''' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. == Spelets slut == Spelet tar slut antingen när en spelare eliminerat sin motståndare genom att överfylla hens planet med bubblees, eller när det inte längre finns några bubblees kvar i påsen. I det första fallet vinner spelaren som eliminerat sin motståndare, i det andra fallet vinner spelaren med flest poppade bubblees (där varje poppad bubblee är värd ett poäng). b95cc68b240ec3b8c920df56b3baf635d5ed4f4e 361 360 2017-06-24T03:39:20Z Kaminix 1857 wikitext text/x-wiki '''Bubblee Pop''' är ett sött och roligt spel för två spelare. == Översikt == '''Målet i Bubblee Pop''' är att poppa så många färgglada bubblees som möjligt, varje poppad bubblee är värd 1 poäng. På sin tur väljer spelaren två ortogonalt intilliggande bubblees från mittenutrymmet ("himlen") som faller ner på hens egna spelarutrymme (hens "planet"), när minst tre bubblees av samma färg ligger på rad (ortogonalt) poppas dem och alla intilliggande bubblees av samma färg (även om dessa bubblor inte ligger i samma rad). När bubblees poppas triggar de speciella effekter beroende på vilken färg de är, vilket kan leda till en kedjereaktion där än fler bubblees poppas. Spelet har vissa likheter med spel som Tetris, Candy Crush och Puyo-Puyo. == Steg för steg == Spelarna turas om att utföra följande steg: # Spelaren drar 1 bubblee från påsen och placerar den på ett tomt utrymme i himlen. Första turen skippar man detta steg eftersom himlen redan är full. # Spelaren '''kan''' (men måste inte) skifta plats på två ortogonalt intilliggande bubblees i himlen. # Spelaren '''måste''' välja två ortogonalt intilliggande bubblees i himlen som faller ner på hens planet. # Om spelaren nu skapat en obruten rad av minst tre ortogonalt intilliggande bubblees av samma färg på sin planet så poppas dessa samt alla bubblees ortogonalt kopplade till kedjan. Spelaren får 1 poäng för varje poppad bubblee. # Bubblees som ligger ovanpå utrymmen som efter poppningen står tomma dras nu ner av gravitationen mot spelarens planet. Spelaren kan nu använda förmågor från bubblees som poppades i steg fyra (beroende på vilken färg de poppade bubbleesarna var). (ortogonalt betyder horisontalt eller vertikalt, men inte diagonalt) == Förmågor == Alla bubblees har förmågor som varierar med färg. Samtliga förmågor är valfria så spelaren måste inte aktivera dem. '''Lila bubblees:''' Spelaren kan skicka en fri bubblee (en bubblee som inte han en annan bubblee ovanpå sig) från sin egen planet genom himlen ner på motståndarens planet. Bubbleen flyger rakt genom himlen och hamnar på den rad som ligger rakt ovanför den rad som bubbleen kom från. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Blå bubblees:''' Spelaren kan få en bubblee på motståndarens sida av himlen att falla ner på motståndarens planet. Bubbleen faller rakt ner på samma den rad av motståndarens planet som ligger precis under (eller ovanför från aktiva spelarens vy) dess tidigare position i himlen. En bubblee kan inte falla ner i en tom rad, med undantag om alla motståndarens rader är fulla i vilket fall spelaren kan skicka ner en bubblee för att eliminera motståndaren. '''Röda bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på motståndarens planet, precis som man gör i himlen i steg 2. '''Gröna bubblees:''' Spelaren kan skifta plats på två ortogonalt intilliggande bubblees på sin egen planet, precis som man gör i himlen i steg 2. '''Gula bubblees:''' Spelaren kan placera en fri bubblee (en bubblee som inte har en annan bubblee ovanpå sig) i sin score area och då få poäng för den. '''Svarta bubblees:''' Har ingen förmåga, de ligger bara i vägen och kan inte poppas annat än genom användning av andra bubblees förmågor. Båda spelarna börjar med 3, 4 eller 5 svarta bubblees på sin planet beroende på vilken svårighetsgrad spelarna valt. == Spelets slut == Spelet tar slut antingen när en spelare eliminerat sin motståndare genom att överfylla hens planet med bubblees, eller när det inte längre finns några bubblees kvar i påsen. I det första fallet vinner spelaren som eliminerat sin motståndare, i det andra fallet vinner spelaren med flest poppade bubblees (där varje poppad bubblee är värd ett poäng). e53ad1c8d374e3aa38275a7f7bcf90df78bbfe55 Gamehelptakaraisland 0 79 362 2017-06-25T21:31:53Z Kaminix 1857 Skapade sidan med ''''Takara Island''' är ett spel för 2-4 spelare som kombinerar element från bland annat worker placement och memory. Målet i spelet är att hitta en eller båda av de två...' wikitext text/x-wiki '''Takara Island''' är ett spel för 2-4 spelare som kombinerar element från bland annat worker placement och memory. Målet i spelet är att hitta en eller båda av de två '''Legendstenarna'''! En spelare som hittar båda legendstenarna vinner omedelbart matchen, om två spelare har hittat en sten var vinner den spelare med flest '''XP'''. 33fae2e90db2347d7fe13ef04b3ebaad96ed0840 363 362 2017-06-26T00:52:44Z Kaminix 1857 wikitext text/x-wiki '''Takara Island''' är ett spel för 2-4 spelare som kombinerar element från bland annat worker placement och memory. Målet i spelet är att hitta en eller båda av de två '''legendstenarna'''! En spelare som hittar båda legendstenarna vinner omedelbart matchen, om två spelare har hittat en sten var vinner den spelare med flest '''XP'''. === Spelkomponenter === Varje spelare har en egen bricka där man har sina äventyrare och eventuella XP-brickor. Utöver det finns ett huvudbräde med flera komponenter listade nedan. * Sex '''utgrävningsplatser''' bestående av högar med 9 kort vardera vid spelets start. * '''Haket''' - öns lokala pub där man kan placera en eller flera av sina äventyrare och får då 1 guld per äventyrare. (detta är oftast ett väldigt ineffektivt sätt att samla guld) * '''Butiken''' - där man kan byta XP mot pengar eller pengar mot XP. * '''Hamnen''' - där man kan anlita olika specialistkort för att få tillgång till specialhandlingar. * '''Svärdet/Smedjan''' - där man i början av sin tur, innan man placerat ut några äventyrare, kan hyra ett svärd för 3 guld. * '''Sjukhuset''' - där skadade äventyrare hamnar. * '''Stranden''' - där man vid slutet av sin tur kan anställa en tredje äventyrare för 5 guld. * En hög med skattkort i mitten av utgrävningsplatserna från vilken spelaren får dra kort === Spelflöde === # I början av sin tur kan spelaren välja att spendera 3 guld för att hyra svärdet, detta måste göras innan några äventyrare placerats ut på brädet. Detta görs genom att klicka på svärdet. # Spelaren kan sedan placera ut sina två äventyrare (eller tre om hen anställt den extra äventyraren från stranden) på de olika platserna på brädet. # Efter att alla äventyrare placerats ut kan spelaren anställa den extra äventyraren på stranden eller betala sjukhuset för att få ut sina skadade äventyrare snabbare. När en äventyrare placeras ut på någon av utgrävningsplatserna finns två handlingar tillgängliga: gräva eller inspektera. Om hen gräver upp ett kort så vänds det översta kortet i högen på utgrävningsplatsen upp och dess effekt, vad det än må vara, utförs. Effekterna varierar från kort till kort och vi kommer att gå igenom dessa i avsnittet om korttyper och kortsymboler längre ner. Om hen väljer att inspektera utgrävningsplatsen så vänds de tre översta korten i högen upp. Om det bland de tre översta korten finns ett stenras blir detta synligt för samtliga spelare (och spelaren som hittade den får 2 guld), men inspektionen avbryts (korten/kortet efter stenraset vänds inte upp). === Korttyper och kortsymboler === '''Symboler:''' * Ett '''plustecken (eller sjukhuskors)''' på kortet innebär att äventyraren som gräver upp kortet skadas och måste tas till sjukhus när kortet vänds upp. * Ett '''mynt''' med en siffra i innebär att spelaren får så många guldmynt som siffran på kortet visar. * En '''pergamentsrulle''' med en siffra i innebär att spelaren får en XP-bricka värd så många XP som siffran på kortet visar. '''Korttyper:''' * '''Skattkista:''' spelaren drar ett skattkort från högen i mitten av utgrävningsplatserna. Dessa ger XP eller guld beroende på vilket kort man får. * '''Monster:''' om spelaren inte har ett svärd så skadas äventyraren och måste in på sjukhus. Om spelaren har ett svärd så händer ingenting, men monsterkortet stannar uppvänt högst upp på högen. Vid inspektion kan äventyraren välja att berätta för sina motspelare var monstren finns och därmed vända upp dem, spelaren får då 2 guld för varje monster. * '''Stenras:''' om stenraskortet inte var uppvänt sedan innan får spelaren två guld. Om det var uppvänt krävs två äventyrare för att gräva ut stenraset, och vid utgrävningen får spelaren två guld för varje uppvänt stenraskort som ligger högst upp på utgrävningsplatserna (alltså maximalt 2*6 = 12 guld om alla utgrävningsplatser har uppvända stenras högst upp). * '''Legendsten:''' spelaren får en legendsten! Detta krävs för att vinna spelet. === Att slåss mot monster === Om spelaren har hyrt svärdet och ställer en äventyrare på en utgrävningsplats med ett uppvänt monster påbörjas en strid! Striden går till som så att en sexsidig tärning slås. Två av tärningens sidor har plustecken/sjukhuskors, om tärningen visar en av dessa skadas äventyraren och åker in på sjukhus. Resterande fyra sidor har ett svärd på sig, om tärningen visar en av dessa så tar monstret en skada och tärningen slås om tills monstret dör eller äventyraren åker in på sjukhus. Längst ner i högra hörnet på monsterkortet står det hur många träffar som krävs för att besegra monstret. Högst upp på kortet finns en symbol med ett mynt och/eller en symbol med en pergamentsrulle. Dessa indikerar vilken belöning spelaren som besegrar monstret får. b2953a143c82794258debb7e91962ec59879c0ab Gamehelpsechsnimmt 0 80 364 2017-06-29T17:13:02Z Kaminix 1857 Skapade sidan med 'I det här spelet vill du ta upp så få kort som möjligt. Alla spelare börjar med 66 poäng och för varje kort man tvingas ta upp förlorar man mellan 1 och 7 poäng beroe...' wikitext text/x-wiki I det här spelet vill du ta upp så få kort som möjligt. Alla spelare börjar med 66 poäng och för varje kort man tvingas ta upp förlorar man mellan 1 och 7 poäng beroende på antalet tjurskallar på kortet. Spelet tar slut när någon av spelarna hamnar på noll poäng och spelaren som då har flest poäng kvar vinner! === Spelflöde === Alla spelare får 10 kort på hand i början av varje runda. Fyra kort läggs i mitten på bordet och utgör början på fyra rader av kort. Alla spelare väljer i hemlighet ett kort från sin hand som de lägger ner på bordet. När alla spelare har valt ett kort vänds de valda korten ut samtidigt. Turordningen sker från lägsta till högsta kort. Spelaren med lägsta kortet börjar med att lägga ut sitt kort i en av raderna enligt följande regler: # Kort måste läggas i stigande ordning, du får alltså inte lägga ditt kort på en rad som har högre kort än det kort du valt. # Kortet måste läggas efter det kort på bordet som är närmast siffervärdet på kortet. Man kan alltså inte välja rad själv. Under spelets gång kommer raderna att fyllas upp med kort. När en rad har fem kort anses den vara full, om en spelares valda kort skulle placeras på en full rad enligt ovanstående regler måste hen ta hela raden och det nyligen placerade kortet blir då början på en ny rad. Om en spelare väljer ett kort som är för lågt för att placeras i någon rad måste spelaren ta en valfri rad. === Tjurskallar === Varje kort har ett antal tjurskallar på sig, hur många tjurskallar ett kort har beror på siffran som står på kortet och följer nedanstående mönster: * '''Kort med femmor''' på (5, 15, 25 etc) har '''två tjurskallar'''. * '''Kort med tiotal''' på (10, 20, 30 etc) har '''tre tjurskallar'''. * '''Kort som är dubbletter''' på (11, 22, 33 etc) har '''fem tjurskallar'''. * '''Kortet 55''' på har både en femma och är en dubblett och har därför '''sju tjurskallar'''. * '''Övriga kort''' som inte faller i ovanstående kategorier har '''en tjurskalle'''. 8a739c4cf9de41782fcc6cdfa55e88db27af116a 365 364 2017-06-29T17:15:04Z Kaminix 1857 wikitext text/x-wiki I det här spelet vill du ta upp så få kort som möjligt. Alla spelare börjar med 66 poäng och för varje kort man tvingas ta upp förlorar man mellan 1 och 7 poäng beroende på antalet tjurskallar på kortet. Spelet tar slut när någon av spelarna hamnar på noll poäng och spelaren som då har flest poäng kvar vinner! === Spelflöde === Alla spelare får 10 kort på hand i början av varje runda. Fyra kort läggs i mitten på bordet och utgör början på fyra rader av kort. Alla spelare väljer i hemlighet ett kort från sin hand som de lägger ner på bordet. När alla spelare har valt ett kort vänds de valda korten ut samtidigt. Turordningen sker från lägsta till högsta kort. Spelaren med lägsta kortet börjar med att lägga ut sitt kort i en av raderna enligt följande regler: # Kort måste läggas i stigande ordning, du får alltså inte lägga ditt kort på en rad som har högre kort än det kort du valt. # Kortet måste läggas efter det kort på bordet som är närmast siffervärdet på kortet. Man kan alltså inte välja rad själv. Under spelets gång kommer raderna att fyllas upp med kort. När en rad har fem kort anses den vara full, om en spelares valda kort skulle placeras på en full rad enligt ovanstående regler måste hen ta hela raden och det nyligen placerade kortet blir då början på en ny rad. Om en spelare väljer ett kort som är för lågt för att placeras i någon rad måste spelaren ta en valfri rad. En runda varar tills spelarna gjort sig av med alla kort på hand. Om ingen då kommit ner till 0 poäng startar rundan på nytt med nya rader och nya kort på hand. === Tjurskallar === Varje kort har ett antal tjurskallar på sig, hur många tjurskallar ett kort har beror på siffran som står på kortet och följer nedanstående mönster: * '''Kort med femmor''' på (5, 15, 25 etc) har '''två tjurskallar'''. * '''Kort med tiotal''' på (10, 20, 30 etc) har '''tre tjurskallar'''. * '''Kort som är dubbletter''' på (11, 22, 33 etc) har '''fem tjurskallar'''. * '''Kortet 55''' på har både en femma och är en dubblett och har därför '''sju tjurskallar'''. * '''Övriga kort''' som inte faller i ovanstående kategorier har '''en tjurskalle'''. 578c154276fdab6ac73a03f315cf2c05daba3ec7 366 365 2017-06-29T17:15:20Z Kaminix 1857 wikitext text/x-wiki I det här spelet vill du ta upp så få kort som möjligt. Alla spelare börjar med 66 poäng och för varje kort man tvingas ta upp förlorar man mellan 1 och 7 poäng beroende på antalet tjurskallar på kortet. Spelet tar slut när någon av spelarna hamnar på noll poäng och spelaren som då har flest poäng kvar vinner! === Spelflöde === Alla spelare får 10 kort på hand i början av varje runda. Fyra kort läggs i mitten på bordet och utgör början på fyra rader av kort. Alla spelare väljer i hemlighet ett kort från sin hand som de lägger ner på bordet. När alla spelare har valt ett kort vänds de valda korten ut samtidigt. Turordningen sker från lägsta till högsta kort. Spelaren med lägsta kortet börjar med att lägga ut sitt kort i en av raderna enligt följande regler: # Kort måste läggas i stigande ordning, du får alltså inte lägga ditt kort på en rad som har högre kort än det kort du valt. # Kortet måste läggas efter det kort på bordet som är närmast siffervärdet på kortet. Man kan alltså inte välja rad själv. Under spelets gång kommer raderna att fyllas upp med kort. När en rad har fem kort anses den vara full, om en spelares valda kort skulle placeras på en full rad enligt ovanstående regler måste hen ta hela raden och det nyligen placerade kortet blir då början på en ny rad. Om en spelare väljer ett kort som är för lågt för att placeras i någon rad måste spelaren ta en valfri rad. En runda varar tills spelarna gjort sig av med alla kort på hand. Om ingen då kommit ner till 0 poäng startar rundan på nytt med nya rader och nya kort på hand. === Tjurskallar === Varje kort har ett antal tjurskallar på sig, hur många tjurskallar ett kort har beror på siffran som står på kortet och följer nedanstående mönster: * '''Kort med femmor''' på (5, 15, 25 etc) har '''två tjurskallar'''. * '''Kort med tiotal''' på (10, 20, 30 etc) har '''tre tjurskallar'''. * '''Kort som är dubbletter''' på (11, 22, 33 etc) har '''fem tjurskallar'''. * '''Kortet 55''' på har både en femma och är en dubblett och har därför '''sju tjurskallar'''. * '''Övriga kort''' som inte faller i ovanstående kategorier har '''en tjurskalle'''. 6417571f8148e142432171222b2c5d866fc51276 Tips colorpop 0 81 367 2017-09-05T19:03:35Z Primaryd 2247 Skapade sidan med ' Se till att du inte tar din egen färg om du inte behöver. Men se till att det finns en annan färg du inte tar, så att folk inte kommer att kunna se vilken färg du har. L...' wikitext text/x-wiki Se till att du inte tar din egen färg om du inte behöver. Men se till att det finns en annan färg du inte tar, så att folk inte kommer att kunna se vilken färg du har. Låt oss till exempel säga att din färg är rosa. Om du bara tar två rosa bubblor och tar noll blå bubblor, kommer folk att tänka att du har blå färg, så de kommer ta rosa bubblor - vilket givetvis är precis vad du vill att de ska göra. 49d223cef04003bc93dcd6a1695970e7bd87c53b Tips icecoldicehockey 0 82 368 2020-01-29T11:07:56Z Felifen25 2263 Skapade sidan med 'The cards with a red box is always risky. try to make a combo of cards that have no red box to the OZ, at least one card that allows you to select an inside shot card and an i...' wikitext text/x-wiki The cards with a red box is always risky. try to make a combo of cards that have no red box to the OZ, at least one card that allows you to select an inside shot card and an inside shot. 6a1c8ca42b304a6e660cdda9acde0b8982b29885 Tips coloretto 0 83 369 2021-01-03T21:39:29Z Agnlin 2344 Skapade sidan med 'Var inte rädd för att ta ett mindre antal kort.' wikitext text/x-wiki Var inte rädd för att ta ett mindre antal kort. 31894adba39833feb01b7234125d82d364aa9878 Gamehelpinnovation 0 84 370 2021-01-13T15:51:38Z Agnlin 2344 Skapade sidan med 'hej' wikitext text/x-wiki hej c412b37f8c0484e6db8bce177ae88c5443b26e92 371 370 2021-01-13T15:51:57Z Agnlin 2344 Tömde sidan wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Gamehelpthroughtheagesnewstory 0 85 372 2021-02-27T07:46:02Z Johan IV 2365 Svenska regler wikitext text/x-wiki Tidsåldrar I, II, och III avslutas när det sista kortet från den nuvarande tidsålderns civila lek lagts ut på kortraden. Nästa tidsålder börjar omedelbart: Kort från tidigare tidsåldrar än den som just avslutades (men inte kort från den tidsålder som avslutades) är föråldrade: Spelarna kastar alla föråldrade kort från handen. Alla föråldrade ledare tas ur spel. Alla föråldrade underverk som inte är färdiga tas ur spel. (Blå pjäser på underverken returneras till spelarens blå bank.) Alla föråldrade pakter tas ur spel. Obs: övriga utspelade kort (teknologier, kolonier, färdiga underverk, exklusiva och vanliga taktiker, förklarade krig) är i spel även när de föråldrats. Varje spelare förlorar 2 gula spelpjäser. Blanda den civila leken för den era som just inletts och placera den på den nya tidsålderns plats. Den har blivit nuvarande civila lek. Fortsätt att fylla kortraden om det fortfarande finns tomma rutor. Den militära leken från den förra tidsåldern tas ur spel. Blanda den nya tidsålderns lek och placera den på den nya tidsålderns plats. Tidsålder IV saknar lek och därför fylls inte kortraden. Inga militära kort kan dras i tidsålder IV. Tidsålder IV avslutar spelet. Om den startande spelaren är vid draget är det sista vändan, annars är det den näst sista. 7ad5a289deb171b9938e536de4426cc15db979c6 373 372 2021-02-27T07:50:50Z Johan IV 2365 Polished a bit wikitext text/x-wiki Tidsåldrar I, II, och III avslutas när det sista kortet från den nuvarande tidsålderns civila lek lagts ut på kortraden. Nästa tidsålder börjar omedelbart: Kort från tidigare tidsåldrar än den som just avslutades (men inte kort från den tidsålder som avslutades) är föråldrade: Alla föråldrade kort tas bort från spelarnas händer. Alla föråldrade ledare tas ur spel. Alla föråldrade underverk som inte är färdiga tas ur spel. (Blå spelpjäser på underverken returneras till spelarens blå bank.) Alla föråldrade pakter tas ur spel. Obs: övriga utspelade kort (teknologier, kolonier, färdiga underverk, exklusiva och vanliga taktiker, förklarade krig) förblir i spel även efter att ha föråldrats. Varje spelare förlorar 2 gula spelpjäser. Blanda den civila leken för den era som just inletts och placera den på den nya tidsålderns plats. Den är nu nuvarande civila lek. Fortsätt att fylla kortraden om det fortfarande finns tomma rutor. Den militära leken från den förra tidsåldern tas ur spel. Blanda den nya tidsålderns lek och placera den på den nya tidsålderns plats. Tidsålder IV saknar lek och därför fylls inte kortraden. Inga militära kort kan dras i tidsålder IV. Tidsålder IV avslutar spelet. Om den startande spelaren är vid draget är det sista vändan, annars är det den näst sista. dcd58a949ac2be6f66ce7609bede3e9bc6923de8 Gamehelppandemic 0 86 374 2021-10-05T19:28:47Z AngelofIce 2404 Skapade sidan med 'PANDEMIC Ett spel där man skickar medlemmar för att begränsar spridningen av 4 dödliga smittor där ni samtidigt försöker upptäcka botemedel till dessa 4 dödliga smi...' wikitext text/x-wiki PANDEMIC Ett spel där man skickar medlemmar för att begränsar spridningen av 4 dödliga smittor där ni samtidigt försöker upptäcka botemedel till dessa 4 dödliga smittor. Här måste man samarbeta med andra spelare och utnyttja allas respektive styrkor för att lyckas besegra smittor och epidemier som sprider sig över stora delar av världen. Om ni inte vinner tillsammans så förlorar ni tillsammans. Ni vinner om botemedel till de samtliga 4 smittorna hittas (blå, gul, svart och röd). Ni förlorar om 8 utbrott inträffar, om det inte finns några smittokuber kvar i högen när de behövs eller om det inte finns tillräckligt med spelkort. Vid varje tur får man utföra 4 handlingar, dra 2 spelkort och infektera städer. Det finns 7 roller i spelet: - Riskanalytiker: Får som en handling ta valfritt Händelsekort ur Spelarslänghögen och placera det på sitt rollkort. Endast 1 Händelsekort i taget får finnas på rollkortet. Det påverkar inte antalet kort på hand villket är begränsat till 7 kort. - Koordinator: Får som en handling antingen flytta valfri spelpjäs till valfri stad där det redan finns en spelpjäs eller flytta en medspelares spelpjäs, som om den vore din egen. Observera att detta kan bara göras om ägaren till spelpjäsen tillåter detta. - Läkare: Tar bort alla kuber, inte bara 1, av samma färg när handlingen Behandla Smitta utförs. Om en smitta blivit botad kan han ta bort samtliga kuber av denna smittofärg bara genom att besöka staden eller befinna sig i staden vilket inte kräver någon handling. - Ingenjör: Får antingen bygga en forskningsstation i staden han befinner sig i utan att slänga ett Stadskort (då inget Stadskort behövs) eller en gång per tur flytta från en forskningsstation till valfri stad genom att slänga ett Stadskort. - Karantänspecialist: förhindrar både utbrott och utplacerandet av Smittokuber i staden hon befinner sig i samt de städer som är sammankopplade med denna stad. - Forskare: Kan ge valfritt Stadskort från sin hand till en annan spelare som befinner sig i samma stad. När andra spelare sedan Delar Kunskap med Forskaren kan de ta vilket Stadskort som helst från Forskaren. - Vetenskapsman: kan upptäcka botemedel för en smitta med endast 4 Stadskort (inte 5) av samma smittofärg. 1b124719c0ed8f84c2a4f3c87348ef54b80aa640 Gamehelpraceforthegalaxy 0 41 375 193 2022-04-03T13:26:41Z Fruktansvärt 2458 added 6-cost dev cards wikitext text/x-wiki In Race for the Galaxy, players are competing civilizations exploring space, discovering planets to conquer or settle, building an economy by consuming a planet's goods, and building developments. The object of the game is to earn the most victory points from planets and developments played in their tableau, consuming goods, and bonuses from special developments. There are 5 phases to choose from: explore, develop, settle, consume, and produce. Players pick 1 phase per turn (two phases in a 2 player game), then everyone plays only the chosen phases in phase order. Players that chose each phase get an extra benefit. At the end of each round players with more than 10 cards discard down to 10 cards and a new round begins. The game continues until one player plays 12 cards on their tableau or when the VP pool is exhausted. At the end of that round points are added up. The player with the most points is the winner! In case of a tie, the player with the most goods on the board plus cards in hand wins. You may drag a resource (single-coloured small card) to a consumption power to consume it. ALIEN TECH INSTITUTE: 3/ Alien technology production world • 2/ Alien technology windfall world • 2/ other ALIEN card (including this one)<br> FREE TRADE ASSOCIATION: 2/ Novelty production world • 1/ Novelty windfall world • 2/ CONSUMER MARKETS, EXPANDING COLONY<br> GALACTIC FEDERATION: 2/ 6-cost developments (including this one) • 2/ other developments<br> GALACTIC IMPERIUM: 2/ Rebel military world • 1/ other military world<br> GALACTIC RENAISSANCE: 1/ every three VPs in chips (round down) • 3/ RESEARCH LABS, GALACTIC TRENDSETTERS, ARTIST COLONY<br> GALACTIC SURVEY/SETI: 1/ development with an Explore power (including this one) • 2/ world with an Explore power • 1/ other world<br> MERCHANT GUILD: 2/ production world (not windfall) • 1/ good at game end<br> MINING LEAGUE: 2/ Rare elements production world • 1/ Rare elements windfall world • 2/ MINING ROBOTS, MINING CONGLOMERATE<br> NEW ECONOMY: 2/ development with a IV power (including this one) • 1/ world with a IV power<br> NEW GALACTIC ORDER: total Military (count negative Military but do not count specialized Military)<br> PAN-GALACTIC LEAGUE: 2/ Genes world • 1/ other military world • 3/ CONTACT SPECIALIST<br> TRADE LEAGUE: 2/ development with a $ power (including this one) • 1/ world with a $ power af7caa51681aa6865fb7636bb24c5b30b6059e2c 376 375 2022-04-07T11:25:46Z Fruktansvärt 2458 wikitext text/x-wiki In Race for the Galaxy, players are competing civilizations exploring space, discovering planets to conquer or settle, building an economy by consuming a planet's goods, and building developments. The object of the game is to earn the most victory points from planets and developments played in their tableau, consuming goods, and bonuses from special developments. There are 5 phases to choose from: explore, develop, settle, consume, and produce. Players pick 1 phase per turn (two phases in a 2 player game), then everyone plays only the chosen phases in phase order. Players that chose each phase get an extra benefit. At the end of each round players with more than 10 cards discard down to 10 cards and a new round begins. The game continues until one player plays 12 cards on their tableau or when the VP pool is exhausted. At the end of that round points are added up. The player with the most points is the winner! In case of a tie, the player with the most goods on the board plus cards in hand wins. You may drag a resource (single-coloured small card) to a consumption power to consume it. ALIEN TECH INSTITUTE: 3/ Alien technology production world • 2/ Alien technology windfall world • 2/ other ALIEN card (including this one) FREE TRADE ASSOCIATION: 2/ Novelty production world • 1/ Novelty windfall world • 2/ CONSUMER MARKETS, EXPANDING COLONY GALACTIC FEDERATION: 2/ 6-cost developments (including this one) • 2/ other developments GALACTIC IMPERIUM: 2/ Rebel military world • 1/ other military world GALACTIC RENAISSANCE: 1/ every three VPs in chips (round down) • 3/ RESEARCH LABS, GALACTIC TRENDSETTERS, ARTIST COLONY GALACTIC SURVEY/SETI: 1/ development with an Explore power (including this one) • 2/ world with an Explore power • 1/ other world MERCHANT GUILD: 2/ production world (not windfall) • 1/ good at game end MINING LEAGUE: 2/ Rare elements production world • 1/ Rare elements windfall world • 2/ MINING ROBOTS, MINING CONGLOMERATE NEW ECONOMY: 2/ development with a IV power (including this one) • 1/ world with a IV power NEW GALACTIC ORDER: total Military (count negative Military but do not count specialized Military) PAN-GALACTIC LEAGUE: 2/ Genes world • 1/ other military world • 3/ CONTACT SPECIALIST TRADE LEAGUE: 2/ development with a $ power (including this one) • 1/ world with a $ power ef1aaaccceb754d05e8936a95108a0b13014d0fe Gamehelpforbiddenisland 0 87 377 2022-05-15T15:37:35Z Madeleine72 2470 Skapade sidan med 'Förbjudna Ön 2-4 spelare Spelets mål: Tillsammans ska alla spelare lägga beslag på alla fyra skatterna, ta dem till Dårens landningsplats och fly med helikoptern för at...' wikitext text/x-wiki Förbjudna Ön 2-4 spelare Spelets mål: Tillsammans ska alla spelare lägga beslag på alla fyra skatterna, ta dem till Dårens landningsplats och fly med helikoptern för att vinna. Om ön hinner sjunka innan så förlorar ni. Alla äventyrare får en egen roll t.ex Pilot, Navigator, Dykare,MFL finns 6 olika. I början av spelet får alla en roll, 2 skattkort. Och vattennivån ställs in. Spelordning 1 Gör upp till tre handlingar 2 Dra två kort ur skatthögen. 3 Dra så många översvämningskort som vattennivån ligger på. 1. Handlingar - Gå ( du kan flytta din pjäs ett steg upp, ned, till höger eller till vänster.varje steg kostar en handling. Du kan gå till en översvämmad bricka men du kan inte gå över ett hål. Undantag för vissa av rollerna som har extra sätt att röra sig på.) - Dränera Du kan dränera angränsande översvämmade öbrickor eller brickan du står på. Man dränerar genom att vända den blå- vita sidan tillbaka till den vanliga sidan igen. - Ge bort ett skattkort Du kan ge bort ett eller flera skattkort till en annan spelare om n befinner er på samma öbricka. Det kostar en handling per kort.Man får inte ge bort specialhandlingar. - Hämta en skatt Du kan hämta en skatt för en handling genom att slänga 4 matchande skattkort från handen förutsatt att din pjäs står på en av de två motsvarande öbrickorna 2. Dra 2 skattkort ur Skatthögen. Man drar ett kort i taget. Lägger de i sin hand. Får man ett Vattnet stiger kort ska man istället följa instruktionerna på kortet innan du slänger det i skattslänghögen. Skattkort: Det finns 5 av varje skattkort i högen. Målet är att samla 4 likadana skattkort för att få hämta en skatt . Du kan ge bort skattkort till andra spelare. Specialhandlingar Finns två olika typer. Helikoptrar och sandpåsar. Dessa kort kan man spela när som helst. Bara följa instruktionerna på korten. Vattnet stiger kort. Då gör man följande som står på kortet flyttar markören på vatten nivån så man måste ta flera kort från Översvämningshögen. Man får max ha 5 kort i sin hand. Slänger valfri när man får för många. 3 Dra översvämningskort. Du tar rollen som den Förbjudna Ön! Drar de antal kort från Översvämningshögen som motsvarar nuvarande vattennivån.För varje draget kort ska du leta upp motsvarande öbricka och göra följande. Om brickan inte är översvämmade ska du vända på den så den blir översvämmad. Om brickan redan är översvämmad så tas brickan ur spelet, den sjunker ner i djupet. Pjäser på översvämmade brickor står kvar men sjunker öbricka du står på så måste du simma bort till närmsta öbricka SM är kvar i spelat ( upp, ned, höger, vänster) Man kan simma till översvämmade brickor. Kan pjäsen inte ta sig till en öbricka så drunknar du och spelet är förlorat för alla. Spelet slutar med att alla skatter är hämtade och alla spelare tar sig till Dårens landningsplats och tar ett helikopterkort därifrån. Då har vi vunnit. Förlust kan ske när följande inträffar: 1. Om båda tempel, grottor, palats, trädgårdar sjunker innan ni har hittat alla skatter. 2. Om Dårens landningsplats sjunker 3. Om en spelare befinner sig på en sjunkande öbricka utan att kunna simma till en angränsande bricka. 4. Om vattennivån när dödskallen a8d7d308f28a652b8305a140dcc2c7ad101cb05d Gamehelpbug 0 88 378 2022-06-27T12:31:25Z Garbax 2475 Swedish translation of the Game Rules for Bug. wikitext text/x-wiki När det är din tur ska du: Expandera: Placera en sten på en tom hexagon för att starta en ny insekt, eller expandera en existerande insekt. Notera: Du kan inte göra detta om det innebär att du skulle slå samman två eller fler av dina egna insekter, och du kan inte expandera en insekt så att den blir större än någon annan insekt på spelplanen. Äta: Alla dina insekter som angränsar till de bland motståndarens insekter som har identisk form, "äter upp" dessa insekter, vilka då avlägsnas från spelplanen. Du kan inte äta upp motståndarens insekter om du inte kan expandera från aktuell position. Bonus-expandera: Om någon av dina insekter har ätit, kan du expandera den med 1 hexagon (så länge det inte innebär att du sammanslår två eller flera av dina egna insekter). Första spelaren som inte kan placera en sten när det är dennes tur, vinner. (Du har då "fyllt ekosystemet med dina insekter så mycket att du inte längre kan expandera".) TIPS Ät inte motståndarens insekter om det inte är nödvändigt. Det är oftast bättre att fördröja uppätandet till spelets slutmoment. När du äter din motståndares kryp, ger du också motståndaren mer flexibilitet. Medan det kan vara roligt att lägga beslag på flera insekter i samma drag, kan det vara farligt, eftersom det ger din motståndare stor flexibilitet att göra en motattack. Försök minimera antalet möjliga placeringar som du kan göra och maximera din motståndares. I spelets slutskede, om det inte längre finns någon taktisk fördel att vinna, fyll de hexagoner som endast du kan fylla, för de hexagoner som både du och din motståndare kan fylla. I slutänden går spelet ut på att göra sådana erövringar som inte leder till mot-erövringar. I spelets början är detta omöjligt. I ett tidigt skede behöver du etablera fördelaktiga positioner, så att du längre fram har bättre möjligheter än motståndaren att förhindra motattacker. Allt handlar om positionering och det kräver lite övning för att utveckla denna förmåga. Svårigheten att bygga former, och därmed svårigheten att försvara och attackera (insekternas) former, bygger på hierarki. Med tiden och erfarenhet blir det lättare att förstå denna hierarki. Då blir det även lättare att ta beslut om vilka former man bör bygga, och vilka former som förhindrar din motsspelare att bygga. På mindre spelplaner blir det extra avgörande att kontrollera den näst yttersta ringen av hexagoner för att vinna – det gör att du inte behöver fylla den yttersta ringen, och omvänt, att din motståndare måste placera där. 7ae8fa23476d3b3fca13dfd6ebfa2a098f185c9f 379 378 2022-06-27T12:32:33Z Garbax 2475 Formating. wikitext text/x-wiki När det är din tur ska du: Expandera: Placera en sten på en tom hexagon för att starta en ny insekt, eller expandera en existerande insekt. Notera: Du kan inte göra detta om det innebär att du skulle slå samman två eller fler av dina egna insekter, och du kan inte expandera en insekt så att den blir större än någon annan insekt på spelplanen. Äta: Alla dina insekter som angränsar till de bland motståndarens insekter som har identisk form, "äter upp" dessa insekter, vilka då avlägsnas från spelplanen. Du kan inte äta upp motståndarens insekter om du inte kan expandera från aktuell position. Bonus-expandera: Om någon av dina insekter har ätit, kan du expandera den med 1 hexagon (så länge det inte innebär att du sammanslår två eller flera av dina egna insekter). Första spelaren som inte kan placera en sten när det är dennes tur, vinner. (Du har då "fyllt ekosystemet med dina insekter så mycket att du inte längre kan expandera".) TIPS Ät inte motståndarens insekter om det inte är nödvändigt. Det är oftast bättre att fördröja uppätandet till spelets slutmoment. När du äter din motståndares kryp, ger du också motståndaren mer flexibilitet. Medan det kan vara roligt att lägga beslag på flera insekter i samma drag, kan det vara farligt, eftersom det ger din motståndare stor flexibilitet att göra en motattack. Försök minimera antalet möjliga placeringar som du kan göra och maximera din motståndares. I spelets slutskede, om det inte längre finns någon taktisk fördel att vinna, fyll de hexagoner som endast du kan fylla, för de hexagoner som både du och din motståndare kan fylla. I slutänden går spelet ut på att göra sådana erövringar som inte leder till mot-erövringar. I spelets början är detta omöjligt. I ett tidigt skede behöver du etablera fördelaktiga positioner, så att du längre fram har bättre möjligheter än motståndaren att förhindra motattacker. Allt handlar om positionering och det kräver lite övning för att utveckla denna förmåga. Svårigheten att bygga former, och därmed svårigheten att försvara och attackera (insekternas) former, bygger på hierarki. Med tiden och erfarenhet blir det lättare att förstå denna hierarki. Då blir det även lättare att ta beslut om vilka former man bör bygga, och vilka former som förhindrar din motsspelare att bygga. På mindre spelplaner blir det extra avgörande att kontrollera den näst yttersta ringen av hexagoner för att vinna – det gör att du inte behöver fylla den yttersta ringen, och omvänt, att din motståndare måste placera där. 97e305f3ce0749afa3dae3f2c194a995b46879e5 Gamehelpanachrony 0 89 380 2023-04-05T03:10:46Z Fruktansvärt 2458 Skapade sidan med ''''Byggnader:''' gul: kraftverk, grå: fabrik, blå: livsstöd, röd: labb. ==Relevans av inledande val för spelet (symmetri och asymmetri)== Spelarfärg motsvarar Väg (eller fraktion). Varje spelare väljer en ledare (från 2 som är unika för varje väg) som ger dem en asymmetrisk kraft. Varje spelare får en uppsättning asymmetriska mål som kallas deras "evakueringsvillkor" (slumpmässigt utvalda från 2 som är unika för varje väg). Alla spelarbräden är ins...' wikitext text/x-wiki '''Byggnader:''' gul: kraftverk, grå: fabrik, blå: livsstöd, röd: labb. ==Relevans av inledande val för spelet (symmetri och asymmetri)== Spelarfärg motsvarar Väg (eller fraktion). Varje spelare väljer en ledare (från 2 som är unika för varje väg) som ger dem en asymmetrisk kraft. Varje spelare får en uppsättning asymmetriska mål som kallas deras "evakueringsvillkor" (slumpmässigt utvalda från 2 som är unika för varje väg). Alla spelarbräden är inställda på antingen alla symmetriska sida A eller alla asymmetriska sida B. Om sida B väljs kommer varje väg att ha asymmetriska startresurser och några asymmetriska spelregler. ==Dubbelkolla ditt evakueringsskick== Din vägtavla kommer att lista ditt evakueringstillstånd. Efter asteroidnedslaget kan du använda en arbetare i en exodräkt för att slutföra din evakueringshandling en gång. Om du gör det får du poängen som anges på ditt väg-bräde i utbyte mot de uppgifter som beskrivs där. Små symboler kan vara svåra att läsa, så dubbelkolla det skriftliga evakueringsvillkoret. ==Små påminnelser om att undvika att skanna regelboken== Tids-varpa en arbetare kräver att ett vatten förbrukas; in-varpat vatten kan användas. För att ta bort en varpbricka som visar en arbetare, flytta fokus till den korrekta eran och flytta sedan en vaken arbetare från ditt spelarbräde till det allmänna förrådet. Vakna arbetare som inte är placerade förblir vakna nästa omgång. Genier får bonusen kopplad till arbetaren de efterliknar. T.ex. Genier som utför gruvdrift förblir motiverade som ingenjörer, genier som bygger är effektiva med titan såsom ingenjörer. Kraftverkshandlingar refererar alltid till den aktuella eran, inte till platsen för fokusmarkören. Därför är följande lagligt. Använd ett kraftverk för att flytta fokus till N eror före nuet, ta bort 1 varpbricka och flytta tillbaks till framtiden. Sedan vid en senare tur under samma era, använd ett ''andra'' kraftverk för att skifta fokus till N-epoker före nuet, ta bort en ''andra'' varpbricka och flytta framåt i tiden ''igen''. Fokusmarkören flyttas inte, men det räknas fortfarande som tidsresa eftersom kraftverkshandlingar alltid refererar till den aktuella eran, inte till platsen för fokusmarkören. ==BGA-gränssnitt== När du bygger ett superprojekt klickar du på det enstaka utrymmet på ditt spelarbräde som kommer att bli det längst till vänster av de två utrymmena som tas upp av superprojektet. a37b3453398b0bba06add02ba3df2c3a38fd3a3e 381 380 2023-04-11T11:03:29Z Fruktansvärt 2458 wikitext text/x-wiki '''Byggnader:''' gul: kraftverk, grå: fabrik, blå: livsstöd, röd: labb. ==Relevans av inledande val för spelet (symmetri och asymmetri)== Spelarfärg motsvarar Väg (eller fraktion). Varje spelare väljer en ledare (från 2 som är unika för varje väg) som ger dem en asymmetrisk kraft. Varje spelare får en uppsättning asymmetriska mål som kallas deras "evakueringsvillkor" (slumpmässigt utvalda från 2 som är unika för varje väg). Alla spelarbräden är inställda på antingen alla symmetriska sida A eller alla asymmetriska sida B. Om sida B väljs kommer varje väg att ha asymmetriska startresurser och några asymmetriska spelregler. ==Dubbelkolla ditt evakueringsskick== Din vägtavla kommer att lista ditt evakueringstillstånd. Efter asteroidnedslaget kan du använda en arbetare i en exodräkt för att slutföra din evakueringshandling en gång. Om du gör det får du poängen som anges på ditt väg-bräde i utbyte mot de villkor som beskrivs där. Små symboler kan vara svåra att läsa, så dubbelkolla det skriftliga evakueringsvillkoret. Genier kan inte användas som andra arbetare i evakueringsvillkoret. ==Små påminnelser för att undvika att skanna regelboken== Tids-varpa en arbetare kräver att ett vatten förbrukas; in-varpat vatten kan användas. För att ta bort en varpbricka som visar en arbetare, flytta fokus till den korrekta eran och flytta sedan en vaken arbetare från ditt spelarbräde till det allmänna förrådet. Vakna arbetare som inte är placerade förblir vakna nästa omgång. Genier får bonusen kopplad till arbetaren de efterliknar. T.ex. Genier som utför gruvdrift förblir motiverade som ingenjörer, genier som bygger är effektiva med titan såsom ingenjörer. Kraftverkshandlingar refererar alltid till den aktuella eran, inte till platsen för fokusmarkören. Därför är följande lagligt. Använd ett kraftverk för att flytta fokus till N eror före nuet, ta bort 1 varpbricka och flytta tillbaks till framtiden. Sedan vid en senare tur under samma era, använd ett ''andra'' kraftverk för att skifta fokus till N-epoker före nuet, ta bort en ''andra'' varpbricka och flytta framåt i tiden ''igen''. Fokusmarkören flyttas inte, men det räknas fortfarande som tidsresa eftersom kraftverkshandlingar alltid refererar till den aktuella eran, inte till platsen för fokusmarkören. ==BGA-gränssnitt== När du bygger ett superprojekt klickar du på det enstaka utrymmet på ditt spelarbräde som kommer att bli det längst till vänster av de två utrymmena som tas upp av superprojektet. af849d5942b39fe939c3d32153e95852b4602322 382 381 2023-05-11T17:09:44Z Fruktansvärt 2458 /* Dubbelkolla ditt evakueringsskick */ wikitext text/x-wiki '''Byggnader:''' gul: kraftverk, grå: fabrik, blå: livsstöd, röd: labb. ==Relevans av inledande val för spelet (symmetri och asymmetri)== Spelarfärg motsvarar Väg (eller fraktion). Varje spelare väljer en ledare (från 2 som är unika för varje väg) som ger dem en asymmetrisk kraft. Varje spelare får en uppsättning asymmetriska mål som kallas deras "evakueringsvillkor" (slumpmässigt utvalda från 2 som är unika för varje väg). Alla spelarbräden är inställda på antingen alla symmetriska sida A eller alla asymmetriska sida B. Om sida B väljs kommer varje väg att ha asymmetriska startresurser och några asymmetriska spelregler. ==Dubbelkolla ditt evakueringsskick== Din väg-bräde visar vad behövs för att uppfylla ditt evakueringstillstånd. Efter asteroidnedslaget kan du använda en arbetare i en exodräkt för att slutföra din evakueringshandling en gång. Om du gör det får du poängen som anges på ditt väg-bräde i utbyte mot de villkor som beskrivs där. Små symboler kan vara svåra att läsa, så dubbelkolla det skriftliga evakueringsvillkoret. Genier kan inte användas som andra arbetare i evakueringsvillkoret. ==Små påminnelser för att undvika att skanna regelboken== Tids-varpa en arbetare kräver att ett vatten förbrukas; in-varpat vatten kan användas. För att ta bort en varpbricka som visar en arbetare, flytta fokus till den korrekta eran och flytta sedan en vaken arbetare från ditt spelarbräde till det allmänna förrådet. Vakna arbetare som inte är placerade förblir vakna nästa omgång. Genier får bonusen kopplad till arbetaren de efterliknar. T.ex. Genier som utför gruvdrift förblir motiverade som ingenjörer, genier som bygger är effektiva med titan såsom ingenjörer. Kraftverkshandlingar refererar alltid till den aktuella eran, inte till platsen för fokusmarkören. Därför är följande lagligt. Använd ett kraftverk för att flytta fokus till N eror före nuet, ta bort 1 varpbricka och flytta tillbaks till framtiden. Sedan vid en senare tur under samma era, använd ett ''andra'' kraftverk för att skifta fokus till N eror före nuet, ta bort en ''andra'' varpbricka och flytta framåt i tiden ''igen''. Fokusmarkören flyttas inte, men det räknas fortfarande som tidsresa eftersom kraftverkshandlingar alltid refererar till den aktuella eran, inte till platsen för fokusmarkören. ==BGA-gränssnitt== När du bygger ett superprojekt klickar du på det enstaka utrymmet på ditt spelarbräde som kommer att bli det längst till vänster av de två utrymmena som tas upp av superprojektet. 3aa115aacb98ec7152c62d855ddf27e9e792e8c7 383 382 2023-05-11T17:10:48Z Fruktansvärt 2458 wikitext text/x-wiki '''Byggnader:''' gul: kraftverk, grå: fabrik, blå: livsstöd, röd: labb. ==Relevans av inledande val för spelet (symmetri och asymmetri)== Spelarfärg motsvarar Väg (eller fraktion). Varje spelare väljer en ledare (från 2 som är unika för varje väg) som ger dem en asymmetrisk kraft. Varje spelare får en uppsättning asymmetriska mål som kallas deras "evakueringsvillkor" (slumpmässigt utvalda från 2 som är unika för varje väg). Alla spelarbräden är inställda på antingen alla symmetriska sida A eller alla asymmetriska sida B. Om sida B väljs kommer varje väg att ha asymmetriska startresurser och några asymmetriska spelregler. ==Dubbelkolla ditt evakueringsskick== Ditt väg-bräde visar vad behövs för att uppfylla ditt evakueringstillstånd. Efter asteroidnedslaget kan du använda en arbetare i en exodräkt för att slutföra din evakueringshandling en gång. Om du gör det får du poängen som anges på ditt väg-bräde i utbyte mot de villkor som beskrivs där. Små symboler kan vara svåra att läsa, så dubbelkolla det skriftliga evakueringsvillkoret. Genier kan inte användas som andra arbetare i evakueringsvillkoret. ==Små påminnelser för att undvika att skanna regelboken== Tids-varpa en arbetare kräver att ett vatten förbrukas; in-varpat vatten kan användas. För att ta bort en varpbricka som visar en arbetare, flytta fokus till den korrekta eran och flytta sedan en vaken arbetare från ditt spelarbräde till det allmänna förrådet. Vakna arbetare som inte är placerade förblir vakna nästa omgång. Genier får bonusen kopplad till arbetaren de efterliknar. T.ex. Genier som utför gruvdrift förblir motiverade som ingenjörer, genier som bygger är effektiva med titan såsom ingenjörer. Kraftverkshandlingar refererar alltid till den aktuella eran, inte till platsen för fokusmarkören. Därför är följande lagligt. Använd ett kraftverk för att flytta fokus till N eror före nuet, ta bort 1 varpbricka och flytta tillbaks till framtiden. Sedan vid en senare tur under samma era, använd ett ''andra'' kraftverk för att skifta fokus till N eror före nuet, ta bort en ''andra'' varpbricka och flytta framåt i tiden ''igen''. Fokusmarkören flyttas inte, men det räknas fortfarande som tidsresa eftersom kraftverkshandlingar alltid refererar till den aktuella eran, inte till platsen för fokusmarkören. ==BGA-gränssnitt== När du bygger ett superprojekt klickar du på det enstaka utrymmet på ditt spelarbräde som kommer att bli det längst till vänster av de två utrymmena som tas upp av superprojektet. 53fc2c27d9cd699bbbcd4ef86b9f24bda139ca6b Gamehelpazulsummerpavilion 0 90 384 2024-07-09T10:09:17Z Jiel73 2490 Skapade sidan med 'Översikt Har flest poäng efter 6 omgångar Fas 1: Insamling På din tur tar du antingen från en fabrik eller tar från mitten Om du tar från en fabrik, välj en färg som inte är den vilda färgen i fabriken och ta all den färgen i den enda fabriken. Om fabriken innehöll den vilda färgen, ta också en av dessa tokens. Därefter flyttar du de återstående brickorna i den fabriken till mitten. Om en fabrik endast innehåller Vild Färg brickor, ta 1 bricka och...' wikitext text/x-wiki Översikt Har flest poäng efter 6 omgångar Fas 1: Insamling På din tur tar du antingen från en fabrik eller tar från mitten Om du tar från en fabrik, välj en färg som inte är den vilda färgen i fabriken och ta all den färgen i den enda fabriken. Om fabriken innehöll den vilda färgen, ta också en av dessa tokens. Därefter flyttar du de återstående brickorna i den fabriken till mitten. Om en fabrik endast innehåller Vild Färg brickor, ta 1 bricka och flytta resten till mitten Om du tar från mitten, ta alla brickor av en färg som inte är Vild Färg plus en enda Vild Färg bricka om det finns. Om det bara finns Vild Färg brickor, ta bara en enda bricka. Om du är den första att ta från Mitten, tar du också Förste Spelar brickan men förlorar poäng lika med antalet brickor som tagits, till minst 1 poäng efter justeringar. Du kan fortfarande vara den första att ta från mitten även om du har en poäng på 1 eller mindre, du justerar bara inte. När det inte finns fler brickor att samla in från fabrikerna eller mitten, fortsätt till den andra delen av omgången Fas 2: Placering Turas om att placera en enskild bricka så länge du har ett minsta antal brickor i den önskade färgen, kassera resten som behövdes men inte placerades På din tavla finns stjärnmönster för varje färg, vid punkterna finns en siffra som visar hur många du måste inneha t.ex. om du vill placera en bricka i grön 3, måste du ha 3 gröna, kassera 2 av dem, samtidigt som du placerar den tredje Den centrala stjärnan har ingen färg, men den kräver en av varje färg istället. Det är ditt val vilken färg du placerar på varje utrymme, men det fungerar på samma sätt som färgade stjärnor med vissa utrymmen dyrare eller billigare än andra Du kan använda den aktuella omgångens Vild Färg för att betala en del av kostnaden, men du måste fortfarande ha en av de faktiska färgerna att placera Du får 1 poäng för att placera en bricka + 1 poäng för varje ansluten bricka på samma stjärna Dessutom finns det chansen att få extra brickor som du väljer om du omger en pelare (4 utrymmen för en bonusbricka), omger en staty (4 utrymmen för två bonusbrickor), omger ett fönster (2 utrymmen för tre bonusbrickor) Vid valfri start av omgången när det kommer runt till dig kan du välja att passa, du kan behålla 4 brickor som du väljer för nästa omgång, eventuellt överskott kasseras och du förlorar 1 poäng per bricka du tvingades kasta När alla spelare har passerat, returnera den första spelaren till mitten Vild färg Varje omgång ändras den vilda färgen i följande ordning Lila (1) Grön (2) Orange (3) Gul (4) Blå (5) Röd (6) Slut på spelet Spelet slutar i slutet av den 6:e omgången, gör sedan poäng enligt följande Komplettera stjärnorna i full poäng: Flerfärgad - 12 Röd - 14 Blå - 15 Gul - 16 Orange - 17 Grön - 18 Lila - 20 Dessutom poäng för att täcka alla av samma kostnad Kostnad 1-4 Kostnad 2-8 Kostnad 3-12 Kostnad 4-16 Alla återstående brickor som inte placeras förlorar dig 1 poäng var Spelaren med flest poäng vinner! cb1bacf2d14dc02df5dbfe81eaff69ef20ec7b56 Gamehelptickettoride 0 91 385 2024-10-30T15:01:03Z Nypan99 2646 Svenska översättning wikitext text/x-wiki Spelets Mål Målet med spelet är att få det högsta antalet poäng. Poäng kan fås av: Gör anspråk på en rutt mellan två intilliggande städer på kartan; Framgångsrikt slutföra en kontinuerlig väg med rutter mellan två städer listade på dina destinationsbiljetter; Slutför den längsta kontinuerliga vägen av rutter. Poäng går förlorade om du inte lyckas fullfölja de rutter som anges på de destinationsbiljetter du behöll. Spelstart Varje spelare får fyra kort från kortleken för tågvagnar. Varje spelare tilldelas tre destinationskort och måste välja minst två att behålla. Spelare håller sina destinationsbiljetter hemliga till slutet av spelet. Siffrorna som står på korten är antalet poäng du får i slutet av spelet. Om du inte lyckas med destinationskortet, kommer du att förlora samma antal poäng. När du har valt dina kort kommer 5 tågkort att delas ut i rad med framsidan upp i dragningsområdet. (Observera att dessa är synliga som små kort under dragningsområdet medan alla spelare väljer sina destinationsbiljetter.) Omgångs översikt Spela bara en av följande åtgärder: Dra tågkort. Ta 2 i valfri kort från kortleken eller de öppna korten; eller ta bara 1 lokomotiv (regnbågsfärgat/wild) kort från de öppna korten. Det finns ingen gräns för handstorlek. Gör anspråk på en rutt. En rutt är en järnväg från en stad till en annan. För att göra anspråk på en rutt måste du ha samma färgade tågvagnskort som visas på kartan (grå representerar vilken färg du vill) och tillräckligt med kort för varje bit som visas på kartan. Du kan använda ett eller flera lokkort som jokerkort. För att göra anspråk på en rutt, klicka på rutten på kartan. Ju längre rutten är, desto fler poäng får du, som visas nedan. Viktig anmärkning: I spel för 2 eller 3 spelare kan endast en av dubbelrutterna användas. En spelare kan göra anspråk på någon av de två vägarna mellan städer, men den andra rutten är då stängd för andra spelare. Dra ut destinationsbiljetter. Dra 3 nya kort och behåll minst ett. Tågvagnskort Det finns 110 tågvagnskort: 14 flerfärgad 12 orange 12 grön 12 blå 12 putpur 12 vit 12 röda 12 svarta – Vissa rutter kräver en specifik färguppsättning. - Flerfärgslok kan ingå i vilken färguppsättning som helst .- Uppåtvända lok kan endast tas som första dragningen, och ett andra kort kan inte dras. - Om tre eller fler vända kort är flerfärgade lokomotiv, kasseras alla vända kort omedelbart och nya vända kort ersätter dem (upp till maximalt tre gånger i rad). - Om kortleken är tom, blandas de som kastas om till ett nytt draghögsdäck. Destinationsbiljetter Det finns totalt 30 destinationsbiljetter, som hålls dolda tills spelets slut.Om en spelare framgångsrikt slutför en serie rutter som förbinder de två städerna, kommer de att lägga till antalet poäng som anges på destinationsbiljetten till sina poängsummor i slutet av spelet.Om de inte lyckas koppla ihop de två städerna dras de av antalet poäng som anges. Destinationsbiljetter hålls hemliga för andra spelare fram till spelets slutliga poäng. Ruttbetyg När en spelare gör anspråk på en rutt, får de omedelbart det antal poäng som anges för längden på rutten som just gjort anspråk på. Slutet på spelet Den sista omgången utlöses så snart någon spelare har 2 eller färre tågvagnar kvar. Varje spelare (inklusive spelaren som utlöste spelets slut) får en sista tur; sedan börjar poängsättningen. Varje spelare får sedan (eller förlorar) poäng beroende på hur många destinationsbiljetter de genomförde (eller misslyckades med). Spelaren/spelarna med den längsta sammanhängande vägen av tågvagnar på kartan får 10 poäng för att ha den längsta rutten. Spelaren med flest poäng vinner! Tiebreaks Mest genomförda destinationsbiljetter Längsta sammanhängande rutten Expansioner 1910 Standardregler, men använd endast nya 1910-biljetter Longest Route slutspelsbonus ersatt med Globetrotter (mest genomförda biljetter) Mega Både längsta rutten OCH Globetrotter spelade Både biljetter till basspel OCH 1910 biljetter används (69 biljetter totalt) Matchstart: Dela ut 5 biljetter och behåll minst 3 Dra ut destinationsbiljetter: Drag 4 behåll minst 1 Städer Destinationsbiljetter innehåller minst en storstad (Chicago, Dallas, Houston, Los Angeles, Miami, New York och Seattle). Totalt 35 biljetter. Matchstart: Dela ut 4 biljetter och behåll minst 2 Dra ut destinationsbiljetter: Drag 4 behåll minst 1 Inget slutspelsbonuskort bfaf614a66a3ee73a6b996ab8ef089adbdd0e379